Rails: Найти по атрибуту связанной модели? - PullRequest
3 голосов
/ 22 марта 2011

Итак, я попытался найти пример того, как это сделать, и я не уверен, что даже знаю, как описать то, что я пытаюсь сделать. Я абсолютный нуб, когда дело доходит до SQL, и я уверен, что это действительно просто, но я полностью потерян:

У меня есть модель, Photo, которая has_many :tags, :through => :taggings. Теги имеют имя и идентификатор.

Я хочу сделать что-то вроде: Photo.where( #tag_name in [array] )

... но, как я уже сказал, я понятия не имею, как написать что-то подобное или что искать, чтобы увидеть пример в Google.

Может ли кто-нибудь дать мне пример такого запроса и как его можно назвать?

Спасибо!

Ответы [ 2 ]

10 голосов
/ 22 марта 2011

Только что попробовал это на моей аналогичной модели и, кажется, работает нормально:

Photo.joins(:tags).where('tags.name' => ['herp','derp']).group(:id)

Также, вот большой ресурс по AREL, запрашивающий интерфейсные рельсы 3, использует , синформация об этих и других вызовах ActiveRecord, связанных с запросами.

1 голос
/ 28 марта 2011

Итак, как метод Бретта, получается, что следующие работы без взлома PostgreSQL:

def self.tagged_with( string )
  array = string.split(',').map{ |s| s.lstrip }
  select('distinct photos.*').joins(:tags).where('tags.name' => array )
end

Проблема решена!См. эту статью , чтобы узнать, почему это лучшая идея, чем «группа».

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