我有一个项目管理应用程序,包含项目,任务和作业。
Project
has_many :tasks
Task
belongs_to :project
has_many :assignments
Assignment
belongs_to :task
belongs_to :user
我希望能够通过一个请求获取项目的所有任务和作业。
目前我必须请求每个任务的分配,如果用户只有几个任务,这可能效率很低。
答案 0 :(得分:2)
如果你做这样的事情,Rails会找出最好的查询来运行
# Assuming params[:id] is the project id.
@project = Project.includes(:tasks => :assignments).find(params[:id])
因此,当您要求@project.tasks
并使用task.assignments
循环完成每个任务时,已经加载了关联。
答案 1 :(得分:1)
将通过添加到Project
模型中,如下所示:
has_many :tasks
has_many :assignments, through: :tasks
现在,您可以调用@project.assignments
来获取该项目的所有分配,或者@project.assignments.uniq
来列出唯一分配(不重复),如果分配在两个以下任务扩展您的关联以包含该功能。