複数の行に条件を適用するためのこの回答で、この種のクエリを作成するための可能な方法を確認することをお勧めします。参加中 。これは、サブクエリアプローチである1Bを使用してRailsでクエリを実装するための1つの可能なオプションです...
PostTag
でクエリを定義します Post
を取得するモデル 特定のTag
のID値 名前:
# PostTag.rb
def self.post_ids_for_tag(tag_name)
joins(:tag).where(tags: { name: tag_name }).select(:post_id)
end
Post
でクエリを定義します Post
を取得するモデル 特定のTag
のレコード サブクエリ構造を使用した名前:
# Post.rb
def self.for_tag(tag_name)
where("id IN (#{PostTag.post_ids_for_tag(tag_name).to_sql})")
end
次に、次のようなクエリを使用できます:
Post.for_tag("basil").for_tag("tomato")