Найти количество различных значений в определенном столбце в Rails find - PullRequest
2 голосов
/ 17 ноября 2009

Я делаю поиск в модели Rails следующим образом:

@jobs = Job.find(:all, :conditions => ["job_id = ?", params[:id]])

Результат этого запроса также возвращает данные из связанной модели JobResponses (существует несколько JobResponses для каждой записи Job). Получив результаты JobResponse, я вычисляю количество различных средних / медиан и т. Д. Для каждого набора результатов Job.

Одним из столбцов, возвращаемых в JobResponses, является company_id - поэтому я могу получить 10 ответов о вакансиях (4 от компании A, 2 от компании B, 2 от компании C и 1 от компании D & E) - 5 разных компании.

Как я могу рассчитать / отобразить количество различных компаний, которые вернули результат для JobResponses?

Ответы [ 2 ]

2 голосов
/ 17 ноября 2009

Если я хорошо понимаю, попробуйте выполнить следующие действия, чтобы получить количество различных компаний: @ Jobs.map (&: job_responses) .flatten.map (&: company_id) .uniq.size

0 голосов
/ 17 ноября 2009

Может быть, простой sql?

@jobs = Job.find_by_sql('select job.*, count(jr.id) as distinct_responses from job, job_responses jr where jr.job_id = job.id group by job.id')

каждый элемент @jobs теперь имеет distinct_responses accessor

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