我有以下查询
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_heads
和dropdown_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
答案 0 :(得分: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 {|dropdown_head| dropdown_head.dropdown_lists} #do whatever you want with dropdown_lists
与:
相同@sub_category.dropdown_heads.each |dropdown_head|
dropdown_head.dropdown_lists
end
答案 1 :(得分:0)
您不必获取sub_category实例,只需调用
即可 dropdown_heads = DropdownHead.find_all_by_sub_category_id(params[:sub_cat_id])
其余的与@ rb512说的一样。
答案 2 :(得分:0)
您可以使用
SubCategory.joins(dropdown_heads: :dropdown_lists).where(id: params[:sub_cat_id].select("dropdown_heads.dropdown_heads, dropdown_lists.dropdown_lists")
即使您可以使用pluck()
rails方法来检索特定字段。