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() 吗?我应该打扰吗?谢谢。
最佳答案
在 order 子句中,您不需要指定表,除非列名不明确。你也许可以这样做
.order('state_id, city, name ASC')
另外,我认为你的意思是
.where(:parent_id => @employer.id) # instead of .where(@employer.id)
除此之外,我认为你一切都很好。我认为 .count 对这种情况没有帮助。
关于ruby-on-rails-3 - 在 Rails 3 查询中使用 count() 和 group(),还是只使用 sql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4796759/