Фильтрация запросов ActiveRecord по нескольким уникальным атрибутам и объединение результатов - PullRequest
1 голос
/ 18 ноября 2009

В моем проекте rails у меня есть запрос, который находит 10 последних конкурсов и заказов по связанным с ними датам опроса:

@contests = Contest.find(
:all, 
:limit => "10", 
:include => :polls, 
:order => "polls.start_date DESC" )

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

Некоторые из этих конкурсов имеют одинаковые атрибуты :geo, :office и :cd. Я хотел бы объединить их в представлении, поэтому вместо того, чтобы перечислять каждое соревнование и повторять каждый связанный опрос (как я делаю сейчас), я бы хотел проходить через каждую уникальную комбинацию :geo, :office и :cd, а затем для каждой "группы" итерируйте все связанные опросы независимо от связанного contest и сортируйте по polls.start_date. Я бы хотел сделать это без необходимости создавать больше ошибок в БД.

1 Ответ

4 голосов
/ 18 ноября 2009

Если я не понял неправильно, я думаю, вы можете искать это:

@contests.group_by { |c| [c.geo, c.office, c.cd] }

Он дает вам хэш с ключом [c.geo, c.office, c.cd], каждая запись которого содержит Массив конкурсов, которые разделяют комбинацию.

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