Ich habe zwei Modelle: Item
y Tag
. Beide haben ein Attribut name. Ich möchte Elemente finden, die mit mehreren Tags versehen sind.
class Item < ActiveRecord::Base
has_many :tags
validates_presence_of :name
end
class Tag < ActiveRecord::Base
belongs_to :item
validates_presence_of :name
end
Mit einer Liste von Tag-IDs kann ich ganz einfach die Liste der mit einem Tag versehenen Artikel ermitteln ou das andere:
# Find the items tagged with one or more of the tags on tag_ids
Item.all(:conditions => ['tags.id in (?)', tag_ids], :joins => :tags)
Wenn tag_ids
es {1,4}
dann erhalte ich alle Bilder, die mit 1 oder 4 oder beidem gekennzeichnet sind.
Ich möchte jetzt wissen, wie ich die Bilder, die mit beiden markiert sind, bekomme - 1 UND 4.
Ich kann mir gar nicht vorstellen, wie viel SQL hier erforderlich ist.