Rails ActiveRecord: HABTM находит параметры - PullRequest
5 голосов
/ 12 сентября 2010

У меня 2 модели: заметки и метки.

class Note < ActiveRecord::Base
  has_and_belongs_to_many :tags
end

class Tag < ActiveRecord::Base
  has_and_belongs_to_many :notes
end

Тег имеет имя (например, «rss», «javascript» и т. Д.). Каков наилучший способ получить все заметки, которые имеют определенный список тегов? То есть я хотел бы иметь именованный маршрут типа /notes/with_tags/rss,javascript и мне нужен метод класса в Note, называемый find_with_tags().

Итак, как мне это сделать:

class Note
  def self.find_with_tags(tags)
    ?????
  end
end

Я сейчас использую Tag.find_all_by_name(['xml','rss']).map(&:notes).flatten.uniq, но думаю, что должен быть лучший способ

Ответы [ 2 ]

3 голосов
/ 02 октября 2010

В конце концов, это то, что я искал:

Note.find(:all, :include=>:tags, :conditions => ['tags.name in (?)',['rss','xml']])
1 голос
/ 12 сентября 2010

Вы также можете сделать это (хотя я на самом деле не большой поклонник написания sql в запросах), который также вернет все заметки с одним из предоставленных тегов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...