计算搜索结果的总关联数

时间:2015-03-02 04:07:50

标签: ruby-on-rails ruby activerecord

我遵循多对多协会......

class User
   has_and_belongs_to_many :starred_jobs, class_name: "Job",
                           join_table: "starred_jobs"
end

class Job
     has_and_belongs_to_many :starred_by, join_table: "starred_jobs",
                              class_name: "User"
end

在查询中,我获得两个日期之间的用户数量,如

users = User.where(created_at: start_date..end_date)

在摘要页面中,我想查看所选用户的总工作数。现在,我如何从搜索到的用户获得工作总数?例如:

@total_users_jobs = users.jobs.count 

提前致谢。

2 个答案:

答案 0 :(得分:1)

这应该为您提供所有匹配用户的所有工作的总数

@total_users_jobs = Job.joins(:users).where(users: {id: users.map(&:id)}.uniq.count

答案 1 :(得分:1)

最简单且可能资源丰富的方法

users.map { |u| u.jobs.count }.sum

另一种方法

JobUser.where("user_id in (?)", users.map(&:id)).count

另一个

Job.joins(:users).where(users: {id: users.map(&:id)}.uniq.count