【发布时间】:2014-01-26 03:34:01
【问题描述】:
好吧,我觉得我在兜圈子。
我有以下 Rails 模型:
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') 总是提供一个空集,即使有多个图像被标记为两者。
非常感谢任何帮助!
【问题讨论】:
标签: mysql sql ruby-on-rails activerecord ruby-on-rails-4