13

Railsアプリケーションに次のモデルがあります

category => company => store

ストアにはbelongs_to会社があり、会社にはbelongs_toカテゴリの関係があります。ここで、ストア オブジェクトで where メソッドを使用して、同じカテゴリ内のすべてのストアを取得したいと考えています。

私はこのようなものが欲しいです

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

誰か私にこれについてのヒントをくれませんか

4

3 に答える 3

24

結合されたテーブルのどこで結合してみてください:

@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 に答える