1

導致我有以下查詢軌活動記錄來從多個表

SubCategory.joins(dropdown_heads: :dropdown_lists).where(id: params[:sub_cat_id]) 

上面的查詢產生

SELECT "sub_categories".* FROM "sub_categories" INNER JOIN "dropdown_heads" ON "dropdown_heads"."sub_category_id" = "sub_categories"."id" INNER JOIN "dropdown_lists" ON "dropdown_lists"."dropdown_head_id" = "dropdown_heads"."id" WHERE "sub_categories"."id" = 6 

但我真正需要的是僅從dropdown_headsdropdown_lists提取記錄。

我需要做些什麼修改才能實現?

以下是協會

sub_category.rb

has_many: dropdown_heads 

dropdown_head.rb

has_many: dropdown_lists 
belongs_to: sub_category 

dropdown_lists.rb

belongs_to: dropdown_head 

回答

1

從數據庫中檢索sub_category記錄

@sub_category = SubCategory.find(params[:sub_cat_id]) 

檢索所有dropdown_heads

sub_category.dropdown_heads 

迭代通過dropdown_head檢索dropdown_lists

​​

是一樣的:

@sub_category.dropdown_heads.each |dropdown_head| 
dropdown_head.dropdown_lists 
end 
+0

所有這些東西都在控制器中嗎? – overflow

+0

你只需要從控制器獲取sub_category。一旦你有正確的sub_category對象,你可以在你的視圖中做其餘的部分 – rb512

+0

在我的視圖中有這個''%= sub_category.dropdown_heads%>'但拋出異常'未定義的局部變量或方法'sub_category'' – overflow

0

你沒有拿到sub_category例如,你可以叫

dropdown_heads = DropdownHead.find_all_by_sub_category_id(params[:sub_cat_id]) 

,其餘都一樣@ rb512說的一樣。

0

您可以使用

SubCategory.joins(dropdown_heads: :dropdown_lists).where(id: params[:sub_cat_id].select("dropdown_heads.dropdown_heads, dropdown_lists.dropdown_lists") 

即使你可以使用軌道pluck()方法來檢索特定字段。