13

我在rails应用程序中有以下模型

category => company => store

店铺有belongs_to公司,公司有belongs_to品类关系。现在我想在商店对象上使用 where 方法来检索同一类别中的所有商店。

我想要这样的东西

@stores.nearbys(5).where("stores.company.category_id = xxx")

有人可以给我一个提示吗

4

3 回答 3

24

尝试使用连接表上的 where 连接:

@stores.nearbys(5).joins(:company).where("companies.category_id = xxx")

编辑:

要获取商店的类别,您首先必须将类别方法委托给其公司:

class Store < ActiveRecord::Base
 belongs_to :company

 delegate :category, :to => :company
end

现在只需在查询中调用该方法:

@stores.nearbys(5).joins(:company).where("companies.category_id = ?", self.company.id)
于 2012-10-03T11:14:01.560 回答
17

where支持嵌套哈希。

@stores.nearbys(5).where(:company => { :category_id => @category.id }, joins: company)
于 2012-10-03T10:48:39.393 回答
-1

你可以试试这个

 @category = Category.find xxx

 @store = @category.company.stores
于 2012-10-03T11:05:04.243 回答