Sql 返回两个嵌套在一起的表和一个请求

Sql 返回两个嵌套在一起的表和一个请求,sql,ruby-on-rails,Sql,Ruby On Rails,我有一个项目管理应用程序,包含项目、任务和任务 Project has_many :tasks Task belongs_to :project has_many :assignments Assignment belongs_to :task belongs_to :user 我希望能够得到一个项目的所有任务和分配,只有一个请求 目前,我必须请求每个任务的分配,如果用户有多个任务,这可能会非常低效。添加一个有多个任务的项目模型,如下所示: has_many :tasks has_many

我有一个项目管理应用程序,包含项目、任务和任务

Project
has_many :tasks

Task
belongs_to :project
has_many :assignments

Assignment
belongs_to :task
belongs_to :user
我希望能够得到一个项目的所有任务和分配,只有一个请求

目前,我必须请求每个任务的分配,如果用户有多个任务,这可能会非常低效。

添加一个有多个任务的
项目
模型,如下所示:

has_many :tasks
has_many :assignments, through: :tasks
现在您可以调用
@project.assignments
来获取该项目的所有分配,或者调用
@project.assignments.uniq
来列出唯一的分配(不会重复)如果您扩展关联以包含该功能,则任务将包含在两个任务下。

添加一个任务将有多个任务贯穿到
项目
模型中,如下所示:

has_many :tasks
has_many :assignments, through: :tasks
现在您可以调用
@project.assignments
来获取该项目的所有分配,或者调用
@project.assignments.uniq
来列出唯一的分配(不会重复)如果您扩展关联以包含该功能,则任务将包含在两个任务下。

添加一个任务将有多个任务贯穿到
项目
模型中,如下所示:

has_many :tasks
has_many :assignments, through: :tasks
现在您可以调用
@project.assignments
来获取该项目的所有分配,或者调用
@project.assignments.uniq
来列出唯一的分配(不会重复)如果您扩展关联以包含该功能,则任务将包含在两个任务下。

添加一个任务将有多个任务贯穿到
项目
模型中,如下所示:

has_many :tasks
has_many :assignments, through: :tasks

现在,您可以调用
@project.assignments
来获取该项目的所有工作分配,或者
@project.assignments.uniq
来列出唯一的工作分配(不会重复),如果您扩展关联以包含该功能,则该工作分配将处于两个任务之下。

如果您这样做,Rails将找出要运行的最佳查询

# Assuming params[:id] is the project id.
@project = Project.includes(:tasks => :assignments).find(params[:id])

因此,当您请求
@project.tasks
并通过
task.assignments
循环每个任务时,关联已经被加载。

如果您这样做,Rails将找出要运行的最佳查询

# Assuming params[:id] is the project id.
@project = Project.includes(:tasks => :assignments).find(params[:id])

因此,当您请求
@project.tasks
并通过
task.assignments
循环每个任务时,关联已经被加载。

如果您这样做,Rails将找出要运行的最佳查询

# Assuming params[:id] is the project id.
@project = Project.includes(:tasks => :assignments).find(params[:id])

因此,当您请求
@project.tasks
并通过
task.assignments
循环每个任务时,关联已经被加载。

如果您这样做,Rails将找出要运行的最佳查询

# Assuming params[:id] is the project id.
@project = Project.includes(:tasks => :assignments).find(params[:id])



因此,当您请求
@project.tasks
并通过
task.assignments
循环每个任务时,关联已经加载。

这是每个用户还是每个项目?每个项目。我希望在一个查询中获得项目的所有任务和分配。您是否碰巧使用了JSON?如果是这样,您可以重写as_json并使用includes.
@project.as_json(:include=>{:tasks=>{:include=>:assignments}})
@achabachachA322这很有效!谢谢有没有一种方法可以将其作为ruby对象来完成,或者必须作为_json来完成?这是每个用户还是每个项目?每个项目。我希望在一个查询中获得项目的所有任务和分配。您是否碰巧使用了JSON?如果是这样,您可以重写as_json并使用includes.
@project.as_json(:include=>{:tasks=>{:include=>:assignments}})
@achabachachA322这很有效!谢谢有没有一种方法可以将其作为ruby对象来完成,或者必须作为_json来完成?这是每个用户还是每个项目?每个项目。我希望在一个查询中获得项目的所有任务和分配。您是否碰巧使用了JSON?如果是这样,您可以重写as_json并使用includes.
@project.as_json(:include=>{:tasks=>{:include=>:assignments}})
@achabachachA322这很有效!谢谢有没有一种方法可以将其作为ruby对象来完成,或者必须作为_json来完成?这是每个用户还是每个项目?每个项目。我希望在一个查询中获得项目的所有任务和分配。您是否碰巧使用了JSON?如果是这样,您可以重写as_json并使用includes.
@project.as_json(:include=>{:tasks=>{:include=>:assignments}})
@achabachachA322这很有效!谢谢有没有一种方法可以将其作为ruby对象来执行,还是必须作为_json来执行?这只返回赋值。我想将所有任务和工作分配放在一起,并将工作分配嵌套在任务中。@zapatos,您打算如何在视图中显示对象的组合数组?这只返回工作分配。我想将所有任务和工作分配放在一起,并将工作分配嵌套在任务中。@zapatos,您打算如何在视图中显示对象的组合数组?这只返回工作分配。我想将所有任务和工作分配放在一起,并将工作分配嵌套在任务中。@zapatos,您打算如何在视图中显示对象的组合数组?这只返回工作分配。我想将所有任务和工作分配放在一起,并将工作分配嵌套在任务中。@zapatos,您打算如何在视图中显示组合的对象数组?抱歉,我不确定是否遵循。当我在控制台中运行它时,我得到@project的
NoMethodError:undefined method“includes”
对不起,这是一个愚蠢的错误,@project需要分配。这不会返回分配。这是什么意思?如果您循环浏览任务和关联的工作分配,它们应该都已加载,并且不会引起进一步的查询。我正在寻找在一个有效负载中返回的任务和工作分配。抱歉,我不确定是否遵循。当我在控制台中运行它时,我得到@project的
NoMethodError:undefined method“includes”
对不起,这是一个愚蠢的错误,@project需要分配。这不会返回分配。这是什么意思?如果