我有与这些用户相关的用户和任务(属于)。我想得到一个与他们相关的任务少于5个的用户数。我该怎么做呢?
答案 0 :(得分:0)
不确定是否有一种简单的方法可以做到这一点,但这应该有效:
User.joins(:tasks).select("users.*, count(*) as task_count").having("task_count < 5").group(:id)
编辑:以上只返回至少有一个相关任务的用户实例。
你想要的是:
User.joins("LEFT JOIN tasks ON tasks.user_id = users.id").select("users.*, IFNULL(count(tasks.id), 0) AS task_count").having("task_count < 5").group(:id)
但更好的解决方案可能只是在您的用户模型中添加一个counter_cache。
答案 1 :(得分:0)
我不确定这是否适用于1.9.2之前,但是:
User.where(Task.count > 5).count