![](/img/trans.png)
[英]Rails: ActiveRecord query based on attribute of associated model
[英]Pluck associated model's attribute in Rails query
在我的rails應用程序中, 集合有許多項目 ,項目有很多步驟 。
我想抓住集合項目中的所有步驟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
用於連接,然后用於where子句的projects
。 第一個對應於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')
不幸的是,我不認為我們可以通過AR在單個查詢中完成它。 您可以在下面執行嵌套查詢,以便在對數據庫的兩個查詢中檢索它:
Step.includes(:projects)
.where(projects: { id: Projects.includes(:collections)
.where(collections: { id: @collections.id }).pluck(:id) } )
.pluck(:id)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.