Anda mungkin ingin meninjau kemungkinan cara untuk menulis kueri semacam ini di jawaban ini untuk menerapkan ketentuan ke beberapa baris dalam bergabung . Berikut adalah salah satu opsi yang memungkinkan untuk mengimplementasikan kueri Anda di Rails menggunakan 1B, pendekatan sub-kueri...
Tentukan kueri di PostTag
model yang akan mengambil Post
Nilai ID untuk Tag
yang diberikan nama:
# PostTag.rb
def self.post_ids_for_tag(tag_name)
joins(:tag).where(tags: { name: tag_name }).select(:post_id)
end
Tentukan kueri di Post
model yang akan mengambil Post
catatan untuk Tag
given yang diberikan nama, menggunakan struktur sub-kueri:
# Post.rb
def self.for_tag(tag_name)
where("id IN (#{PostTag.post_ids_for_tag(tag_name).to_sql})")
end
Kemudian Anda dapat menggunakan kueri seperti ini:
Post.for_tag("basil").for_tag("tomato")