0
Product、product_tags結合テーブル、およびタグがあります。 Product.findを使用して特定のタグ名を持つすべての製品を検索したいと思います。これは可能ですか?結合テーブルによる検索
Product、product_tags結合テーブル、およびタグがあります。 Product.findを使用して特定のタグ名を持つすべての製品を検索したいと思います。これは可能ですか?結合テーブルによる検索
あなたはコードを投稿しませんでしたが、私は、これはあなたのセットアップであると推定:
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の最も評価されていない機能の一部です。
ありがとうございました。しかし、findメソッドを使用する必要があります。なぜなら、動的な配列の引数を扱う検索メソッドを作成しているからです。私は解決策を見つけました。それはfind引数の最後に ":include =>:tags"を投げているだけでした。 –
どのオブジェクトのfindメソッドですか?あなたが詳細を知りたい場合は、いくつかのコードを投稿してください。最近、Arelの.includeや.joinsやカスタムスコープは、include => ... optionsを追加するよりも使用する方が望ましいです。 –