我正在为求职者构建一个系统,以跟踪他们对使用 Rails 感兴趣的工作。我想根据用户对公司的兴趣程度对公司进行排名,该兴趣程度是通过平均用户声明的对公司发布的每项职位的“兴趣程度”来确定的。例如,沃尔玛可能会发布 3 个职位,用户将提交对每个职位的兴趣级别,然后我们通过对这 3 个兴趣级别进行平均来计算对沃尔玛的总体兴趣。将会有多家公司拥有多种工作岗位。
我的数据库有 2 个表:Companys 和 Jobs,其中一个公司有多个职位,一个职位有一个公司。工作还具有“level_of_interest”属性,该属性应用于计算用户对公司的整体兴趣。
有没有办法只使用 ActiveRecord 方法来做到这一点?我当前的解决方案是:
Job.group('company_id').average(:level_of_interest)
然后使用 Ruby 将公司从生成的哈希中提取出来,但我认为可能有一种方法可以纯粹使用 ActiveRecord 来完成此操作。
DB 是 PG,fwiw。
最佳答案
这样的事情应该有效:
Company.select('companies.id, avg(jobs.level_of_interest)')
.joins(:jobs)
.group('companies.id')
.order('avg(jobs.level_of_interest) desc')
关于sql - ActiveRecord:基于关联列的平均值对表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43162204/