Rails where子句超过两个表

时间:2012-10-03 10:43:40

标签: ruby-on-rails ruby where-clause

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

category => company => store

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

我想有类似的东西

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

有人可以给我一个提示吗

3 个答案:

答案 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