Rails ActiveRecord:HABTM查找参数

Fla*_*tef 5 activerecord ruby-on-rails

我有2个型号:笔记和标签.

class Note < ActiveRecord::Base
  has_and_belongs_to_many :tags
end

class Tag < ActiveRecord::Base
  has_and_belongs_to_many :notes
end
Run Code Online (Sandbox Code Playgroud)

标签有一个名称(例如"rss","javascript"等).检索具有特定标记列表的所有注释的最佳方法是什么?也就是说,我希望有一个命名路由,/notes/with_tags/rss,javascript并且需要在Note上调用类方法find_with_tags().

那么,我该怎么做:

class Note
  def self.find_with_tags(tags)
    ?????
  end
end
Run Code Online (Sandbox Code Playgroud)

我目前正在使用Tag.find_all_by_name(['xml','rss']).map(&:notes).flatten.uniq,但我认为必须有更好的方法

Fla*_*tef 3

最后,这就是我一直在寻找的:

Note.find(:all, :include=>:tags, :conditions => ['tags.name in (?)',['rss','xml']])
Run Code Online (Sandbox Code Playgroud)