Rails中最简单的方法是找到具有最多用户任务的项目

时间:2014-12-03 13:06:58

标签: ruby-on-rails associations

在谈到Rails时,我仍然非常环保,我试图创建一个范围或类方法来帮助我获得最活跃的项目"在我的时间跟踪应用程序中:

任务属于项目和用户。

我可以使用project.rb上的类方法访问user.tasks和project.tasks以及查找每个项目的小时数

def project_hours
  tasks.sum(:hours)
end

理想情况下,我希望能够执行查询以获取用户B为项目A执行的所有任务

然后作为后续工作,尝试按此用户按该项目的任务小时数订购项目。

如果之前已经介绍过,我道歉,我不确定是否有有效的方法可以实现这一目标?

非常感谢。

1 个答案:

答案 0 :(得分:0)

在您的用户模型中:

def tasks_by_project(project)
    self.tasks.where({:project_id => project.id}).group('tasks.project_id').order('SUM(tasks.hours) ASC')
end

现在你可以做到

@user = User.find(1)
@project = Project.find(232)

# return a list of projects scoped by user_id andproject id, ordered by task hours
@user.tasks_by_project(@project)