Vielleicht möchten Sie die Möglichkeiten zum Schreiben dieser Art von Abfrage in dieser Antwort zum Anwenden von Bedingungen auf mehrere Zeilen überprüfen in einem Join . Hier ist eine mögliche Option für die Implementierung Ihrer Abfrage in Rails mit 1B, dem Sub-Query-Ansatz ...
Definieren Sie eine Abfrage im PostTag
Modell, das den Post
aufgreift ID-Werte für einen bestimmten Tag
Name:
# PostTag.rb
def self.post_ids_for_tag(tag_name)
joins(:tag).where(tags: { name: tag_name }).select(:post_id)
end
Definieren Sie eine Abfrage im Post
Modell, das den Post
aufgreift Datensätze für einen bestimmten Tag
name, unter Verwendung einer Unterabfragestruktur:
# Post.rb
def self.for_tag(tag_name)
where("id IN (#{PostTag.post_ids_for_tag(tag_name).to_sql})")
end
Dann können Sie eine Abfrage wie diese verwenden:
Post.for_tag("basil").for_tag("tomato")