我在rails应用程序中有以下模型
category => company => store
商店有belongs_to
公司,公司有belongs_to
类别关系。
现在我想在商店对象上使用where方法来检索同一类别中的所有商店。
我想有类似的东西
@stores.nearbys(5).where("stores.company.category_id = xxx")
有人可以给我一个提示吗
答案 0 :(得分:21)
尝试加入联接表上的位置:
@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)
答案 1 :(得分:10)
where
支持嵌套哈希。
@stores.nearbys(5).where(:company => { :category_id => @category.id }, joins: company)
答案 2 :(得分:-1)
你可以试试这个
@category = Category.find xxx
@store = @category.company.stores