簡體   English   中英

基於HABTM關聯的查詢

[英]Query based on a HABTM association

我正在嘗試在ActiveRecord中合並一個查詢,該查詢部分基於projectitem之間的HABTM關聯。 這就是我想要做的:

@project = Project.find(params[:id])
@company = Company.find(params[:cid])
@items = @company.items.where("items.public" => true OR "items.project_ids" => @project.id )

我在這里遇到各種各樣的錯誤-首先使用OR ,然后items.project_ids無法識別items.project_ids的錯誤,等等。如何正確編寫此查詢?

首先,如果要使用OR,則需要使用字符串,而不是哈希語法。 其次,project_ids是Rails添加的動態字段-要在數據庫級別執行相同的操作,您將必須包含聯接表並使用它。

但是,聯接表在Rails中不是公認的關聯,因此我認為您必須手動指定聯接。

這樣的事情應該起作用:

@company.items.joins("left join items_projects on items_projects.item_id = items.id").where("items.public = true OR items_projects.project_id = ?", @project.id)

假設您使用的是Rails的標准HABTM表名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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