Rails where子句超过两个表

Mar*_*tin 11 ruby ruby-on-rails where-clause

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

category => company => store
Run Code Online (Sandbox Code Playgroud)

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

我想要这样的东西

@stores.nearbys(5).where("stores.company.category_id = xxx")
Run Code Online (Sandbox Code Playgroud)

有人可以给我一个提示

Ere*_*bih 22

尝试连接到连接表的位置:

@stores.nearbys(5).joins(:company).where("companies.category_id = xxx")
Run Code Online (Sandbox Code Playgroud)

编辑:

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

class Store < ActiveRecord::Base
 belongs_to :company

 delegate :category, :to => :company
end
Run Code Online (Sandbox Code Playgroud)

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

@stores.nearbys(5).joins(:company).where("companies.category_id = ?", self.company.id)
Run Code Online (Sandbox Code Playgroud)


Sim*_*tti 11

where 支持嵌套哈希.

@stores.nearbys(5).where(:company => { :category_id => @category.id }, joins: company)
Run Code Online (Sandbox Code Playgroud)