在Rails查找中的特定列中查找不同值的数量

时间:2009-11-17 10:53:42

标签: ruby-on-rails ruby

我在Rails模型中进行如下查找:

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

此查询的结果还会从关联的模型JobResponses中返回数据(每个作业记录有多个JobResponses)。一旦我获得了JobResponse结果,我就会为每组作业结果计算一些不同的平均值/中位数等。

JobResponses中返回的其中一列是company_id - 因此我可能会收到10份求职回复(4位来自A公司,2位来自B公司,2位来自C公司,1份来自公司D& E) - 5不同的公司。

如何计算/显示返回JobResponses结果的不同公司的数量?

2 个答案:

答案 0 :(得分:2)

如果我清楚地了解,请尝试关注以获得不同公司的数量: @ jobs.map(安培;:job_responses).flatten.map(安培;:COMPANY_ID).uniq.size

答案 1 :(得分:0)

也许,普通的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访问者