我在Foo
和Bar
之间有一个 n到n 关系,而Bar是一个可标记的对象。
class Foo < ActiveRecord::Base
has_many :xx
has_many :bars, through: :xx
end
class Bar < ActiveRecord::Base
has_many :xx
has_many :foos, through: :xx
acts_as_taggable
end
我使用acts as taggable on宝石;我想知道是否有办法使用tagged_with
获取所有标有某个标记的Bar对象的Foo对象?
示例:
Foo.with_bar_tagged_with("input_search_tag")
#=> #<ActiveRecord::Relation [#<Foo>,...]
答案 0 :(得分:1)
这不是我的首要任务,但我希望能有类似的东西。
def Foo.with_bar_tagged_with(tag)
Bar.tagged_with(tag).collect{|x|x.bars}.flatten.uniq
end
答案 1 :(得分:0)
最后使用以下方法解决:
Foo.joins(:bars).where("bars.id IN ?",Bar.tagged_with("input_search_tag")).uniq