在我的 Rails 应用程序中,收藏品有很多projects,并且项目有很多steps.
我想获取集合项目中步骤的所有 id,我想知道是否可以在一个查询中完成这一切。
例如,我知道我可以执行以下操作
step_ids = []
@collection.projects.each do |project|
project.steps.each do |step|
step_ids << step.id
end
end
但是否可以执行如下操作:
@collection.projects.include(:steps).pluck("step.id")
// 这里的语法不正确
尝试这个:
Step.joins(:project).where(projects: { collection_id: @collection.id }).pluck(:'steps.id')
注意使用project
对于连接,然后projects
对于 where 子句。第一个对应belongs_to关系,后者是db表的名称。
编辑:在项目和集合之间存在多对多关系的情况下,并假设项目属于_项目_集合(然后has_many :collections, through :project_collection
)
Step.joins(:project => :project_collection)
.where(project_collections: { collection_id: @collection.id })
.pluck(:'steps.id')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)