Rails 新手问题,关于 rails 的 find 方法

huyong36 · 2012年02月15日 · 最后由 huyong36 回复于 2012年02月16日 · 4225 次阅读

刚才碰到个问题。两个 model,Category 和 Product,关系是一对多。categories 表中有一条数据,对应的 products 表有两条 name 分别为“aaa”和"bbb"的商品。 然后我用 find 方法,category = Category.find(:first, :include => [:products], :conditions => ["products.name like ?", "%a%"]) 查找到这条记录。但用 category.products 只有一条,这是为什么呢?要怎么样把它的两条关联数据都求出来?

conditions 中指定了 products 的条件,这会影响最终取到的 products。

这不是你的查询条件么?conditions => ["products.name like ?", "%a%

@googya 恩,但我查出来这个分类以后我要显示这个分类下面所有的商品,不仅仅显示查询条件的 name like a 的。

@ashchan 恩,这是 find 的时候根据条件的出来的吧,要怎么样让它根据 category 对象重新找一次数据库得到两条呢

#4 楼 @huyong36 category.reload.products

@fsword 3Q 就是我想要的

#6 楼 @huyong36 原因是因为你用了 include... 所以你第二次 call products 是不会走数据库得...第一次只拿出来一条 products 所以你 call products 也只能拿到一条。

reload 是强制它重新走数据库拿...所以你能拿到两条....

我觉得你可以用 join 一下来查找,不用用 include...

你这里至少现在看起来并没有用到 include 的任何好处...

@poshboytl 啊,用 join 会再找一次数据库吗?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号