2012-01-18 4 views
0

Product、product_tags結合テーブル、およびタグがあります。 Product.findを使用して特定のタグ名を持つすべての製品を検索したいと思います。これは可能ですか?結合テーブルによる検索

答えて

1

あなたはコードを投稿しませんでしたが、私は、これはあなたのセットアップであると推定:

class Product < ActiveRecord::Base 
    has_many :product_tags 
    has_many :tags, :through => :product_tags 
end 

class Tag < ActiveRecord::Base 
    has_many :product_tags 
    has_many :products, :through => :product_tags 
end 

class ProductTag < ActiveRecord::Base 
    belongs_to :product 
    belongs_to :tag 
end 

次に、あなたが与えられたタグ名を持つすべての製品を見つけることができ、例えば私は非常にActiveRecord::Associations::ClassMethodsに全体のドキュメントのページを読んでお勧めします、参考のため

cool_tag = Tag.find_by_name("cool_product") 
cool_tag.products # => list of all products 

と勉強:次のように「cool_product」。アソシエーション方式は、Active Recordの最も評価されていない機能の一部です。

+0

ありがとうございました。しかし、findメソッドを使用する必要があります。なぜなら、動的な配列の引数を扱う検索メソッドを作成しているからです。私は解決策を見つけました。それはfind引数の最後に ":include =>:tags"を投げているだけでした。 –

+1

どのオブジェクトのfindメソッドですか?あなたが詳細を知りたい場合は、いくつかのコードを投稿してください。最近、Arelの.includeや.joinsやカスタムスコープは、include => ... optionsを追加するよりも使用する方が望ましいです。 –

関連する問題