Хорошо, я чувствую, что бегу в кругах.Потерянный с Rails has_many: через множественный поиск
У меня есть следующие модели: Рельсы
class Image < ActiveRecord::Base
has_many :image_tags
has_many :tags, :through => :image_tags
end
class Tag < ActiveRecord::Base
has_many :image_tags
has_many :images, :through => :image_tags
end
class ImageTag < ActiveRecord::Base
belongs_to :image
belongs_to :tag
end
Так в основном у меня есть изображения, у меня есть метки, и изображения могут иметь все виды тегов.
Если я хочу найти каждое изображение с одним тегом, это легко, не так ли?
def Image.find_by_tag(t)
includes('tags').where(['tags.name = ?', t]).references(:tags)
end
Но я потянув меня за волосы, пытаясь выяснить, как искать несколько тегов одновременно (например, найти все изображения, которые, например, как помечено как «смешной» и «политические»).
Image.find_by_tag('funny').find_by_tag('political')
всегда поставляется с пустым набором, даже если имеется несколько изображений, помеченных как оба.
Любая помощь очень ценится!
Не уверен в этом, но если вы использовали бы .collect (&: name) вместо карты, t также может быть отношением activerecord, правильно? – Ninigi