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_heads记录dropdown_lists

我需要什么修改才能实现它?

以下是协会

子类别.rb

has_many: dropdown_heads

dropdown_head.rb

has_many: dropdown_lists
belongs_to: sub_category

dropdown_lists.rb

belongs_to: dropdown_head
4

3 回答 3

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
于 2013-10-27T06:59:44.463 回答
0

您不必获取 sub_category 实例,只需调用

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

其余的和@rb512 说的一样。

于 2013-10-27T15:03:40.377 回答
0

您可以使用

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

甚至您可以使用pluck()rails 的方法来检索特定字段。

于 2015-04-16T07:15:41.317 回答