sci*_*fic 14 activerecord ruby-on-rails associations
在我的rails应用程序中,集合有许多项目,项目有很多步骤.
我想抓住集合项目中的所有步骤ID,我想知道我是否可以在一个查询中完成所有操作.
例如,我知道我可以做以下事情
step_ids = []
@collection.projects.each do |project|
project.steps.each do |step|
step_ids << step.id
end
end
Run Code Online (Sandbox Code Playgroud)
但是可以做以下事情:
@collection.projects.include(:steps).pluck("step.id") //这里的语法不正确
Joh*_*ohn 27
试试这个:
Step.joins(:project).where(projects: { collection_id: @collection.id }).pluck(:'steps.id')
Run Code Online (Sandbox Code Playgroud)
注意project用于连接,然后projects用于where子句.第一个对应于belongs_to关系,后者是db表的名称.
编辑:在项目和集合之间存在多对多关系的情况下,并假设项目belongs_to project_collection(然后has_many :collections, through :project_collection)
Step.joins(:project => :project_collection)
.where(project_collections: { collection_id: @collection.id })
.pluck(:'steps.id')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14507 次 |
| 最近记录: |