我在我的模型中设置了以下内容:
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
时,这似乎并没有给我想要的东西。我真的只想要一个项目的所有文件,所以真的不需要包括计划。在 Rails 6 中是否有一种简单的方法可以做到这一点?
答案 0 :(得分:2)
文档和计划之间的关系首先通过项目,因此您可以使用joins
,指定一个文档属于一个计划,而一个计划属于一个项目。之后,您可以通过选择 project_id
等于 ...
的 plans(其 document 所属)来过滤行:
Document.joins(plan: :project).where(plans: { project_id: ... })