count () и group () в запросе rails 3, или просто используете sql - PullRequest
4 голосов
/ 25 января 2011

Что такое метод цепных методов в Rails 3 для выполнения такого запроса?

@jobs_by_location =
  Employer.find_by_sql ['SELECT count(j.id) AS job_count, e.* FROM employers e, jobs j' +
                        ' WHERE e.parent_id = ? AND j.employer_id = e.id' +
                        ' AND j.status = 2' +
                        ' GROUP BY e.id' +
                        ' ORDER BY e.state_id, e.city, e.name ASC', @employer.id]

Я придумал:

@jobs_by_location = Employer
  .select('employers.*, count(jobs.id) as job_count').joins(:jobs)
  .group('employers.id').order('employers.state_id,employers.city,employers.name ASC')
  .where(:jobs => {:status => 2}).where(@employer.id)

Могу ли я усилить это еще больше? Могу ли я очистить вызов order () и должен ли я где-то использовать count ()? Должен ли я беспокоиться? Спасибо.

1 Ответ

2 голосов
/ 23 сентября 2011

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

.order('state_id, city, name ASC')

Кроме того, я думаю, что вы хотели поставить

 .where(:parent_id => @employer.id) # instead of .where(@employer.id)

Кроме того, я думаю, что у вас все хорошо. Я не думаю, что .count поможет вам в этом деле.

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