我通过Event
获得Tag
- Tagging
关联。
在数组tags = %w(tag1 tag2 tag3)
中,我有标签名称。我想用这个数组中的一个或多个标签标记所有事件。我怎么能这样做?
答案 0 :(得分:0)
在标记
上写一个范围class Tag < ActiveRecord::Base
def self.with_names(names)
where(name: names)
end
end
然后在Event
上写一个范围class Event < ActiveRecord::Base
def self.for_tags(tag_names)
joins(:tags).
merge(Tag.with_names(tag_names))
end
end
查询带有
标签的事件tags = %w(tag1 tag2 tag3)
Event.for_tags(tags)
如果您不希望重复的事件与多个标记匹配,则可能需要调用uniq
。
Event.for_tags(tags).uniq
答案 1 :(得分:0)
最后我找到了答案,感谢Sontya的评论。
Event.includes(:tags).where(tags: {name: tags})
或
Event.includes(:tags).where("tags.name IN (?)", tags).references(:tags)