Tengo dos modelos: Item
y Tag
. Ambos tienen un atributo de nombre. Quiero encontrar elementos etiquetados con varias etiquetas.rieles: Obtener todos los elementos etiquetados x AND yY z
class Item < ActiveRecord::Base
has_many :tags
validates_presence_of :name
end
class Tag < ActiveRecord::Base
belongs_to :item
validates_presence_of :name
end
Dada una lista de identificadores de etiqueta, puedo fácilmente lo suficientemente obtener la lista de artículos etiquetados con una etiqueta o la otra:
# Find the items tagged with one or more of the tags on tag_ids
Item.all(:conditions => ['tags.id in (?)', tag_ids], :joins => :tags)
Si tag_ids
es {1,4}
, entonces consigo todas las imágenes etiquetado con 1, o 4, o ambos.
quiero saber ahora cómo conseguir las imágenes que están etiquetadas con ambos - 1 Y 4.
ni siquiera puedo imaginar el SQL que se necesita aquí.
Estoy teniendo el mismo problema ... ¡Qué casualidad! – fjuan
Creo que el código también le da "duplicados" si un elemento también está etiquetado con "ambas" etiquetas, lo que puede no ser bueno (use: group => 'items.id' para que no devuelva duplicados). – rogerdpack