簡體   English   中英

在Rails查詢中獲取關聯模型的屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM