を通じて、私はアイテム、地域やカテゴリテーブルを持っている彼らはitem_regionを通じて参加しているが、item_categoryテーブルをANSアクセス:関係
class Item < ActiveRecord::Base
has_many :item_region
has_many :region, :through => :item_region
has_many :item_category
has_many :category, :through => :item_category
class Region < ActiveRecord::Base
has_many :category
has_many :item, ::through => :item_category
class ItemRegion < ActiveRecord::Base
belongs_to :item
belongs_to :region
end
class Category < ActiveRecord::Base
has_many :item, :through => :item_category
has_many :item_category
class ItemCategory < ActiveRecord::Base
belongs_to :item
belongs_to :category
end
に従ってください、私はすべて見つけたいと彼らの関係があります項目の項目とcategory_nameとregion_nameは、region_id、category_id、およびitem_idから結合表を使用しています。
ありがとうございました。
私はこれを掲示しています理由ですが(コメントであり、回答ではありません)。必要な項目を取得してから、その中から希望の地域とカテゴリを取得するのはどうでしょうか。 'item = item.find(item_id'、次に' region = item.regions.where(:id => region_id) 'と' category = item.categories.where(:id => category_id) '。 – prasvin
あなたの返事に感謝します。私が2番目のクエリ領域= item.regions.where(:id => region_id)を起動すると、itemは配列であるため、 "undefine method regions"を返すのでエラーが発生します。 –
Hmm..sorry、しかし 'item'はそうではありません配列 'item = item.find(item_id)'は 'Item'クラスの' item'オブジェクトを与えます 'Item.find(item_id).class'でそれを確認できます"未定義メソッド領域 "例えば、アイテムモデルでは、has_many:regions、:through =>:item_regions'と 'has_many:categories、:through =>:item_categories'である必要があります。 'item.region.where ...'を実行する必要がありますが、項目には多くの領域があるため、これは良い方法ではありません。aのための 'object.collections'を直感的に実行するには、多くの関連があります。 – prasvin