Как получить массив уникальных значений в моем контроллере, который НЕ связан с моделью? - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть таблица с именем Пожертвования, в которой есть столбец с именем сезона.Сезон содержит фактический сезон, в который было сделано пожертвование ... как 2011 или 2010 и т. Д.

У меня также есть контроллер с именем ReportController, который хотел бы передать уникальный список сезонов из таблицы пожертвований.

В ReportController как получить массив этих уникальных значений?Есть ли что-то вроде @valid_seasons = Donations.find(:all).unique{|x| x.season}, которое я использую в своем контроллере отчетов?Смогу ли я передать @valid_seasons в качестве опции для оператора select в файле views / report / foo.html.erb?

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Вы не упоминаете, если это рельсы 3, но, если это так, это должно сработать:

Donations.select(:season).group(:season)

Это выполнит правильную группу по:

SELECT season FROM "donations" GROUP BY season
1 голос
/ 28 сентября 2011

Вы можете использовать uniq_by

Donations.all.uniq_by{|x| x.season}

Однако это все равно выполняет select * на вашем столе.

Возможно, вам лучше использовать raw sql . Что-то вроде:

 Donations.find_by_sql("SELECT * FROM donations GROUP BY season")

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

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