我在我的模型中设置了以下内容:
class Project < ApplicationRecord
has_many :plans
end
class Plan < ApplicationRecord
belongs_to :project
has_many :documents
end
class Document < ApplicationRecord
belongs_to :plan
end
我正在尝试创建一个查询,以便轻松返回所有嵌套的关联记录。例如,我希望能够执行以下操作:Project.documents
并获取项目的所有文档。我用includes
这样的尝试过
Project.includes({plans: [:documents]})
但当我调用Project.documents
时,这似乎并没有给我想要的东西。我真的只想要一个项目的所有文档,所以不需要包含计划。在Rails6中有没有一种简单的方法可以做到这一点?
文档和计划之间的关系首先通过项目,因此您可以使用joins
,指定文件属于规划以及计划隶属于project。之后,您可以通过选择project_id
等于...
:的计划(其文档所属(来过滤行
Document.joins(plan: :project).where(plans: { project_id: ... })