[英]Query based on a HABTM association
我正在嘗試在ActiveRecord中合並一個查詢,該查詢部分基於project
和item
之間的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.