Rails通过关联进行复杂分组

时间:2016-07-21 19:21:57

标签: ruby-on-rails ruby activerecord

我正在创建自定义表单构建器。

表格 has_many 栏目

部分 has_many 字段

字段 has_many User_Values

User_Values 表中有一列名为 cloned_index 。当用户复制某个部分但需要保持这些部分的唯一性时,我会使用它。

我的问题:

有人可以帮我写一个查询,对于每个部分,按字段的用户值的cloned_index对字段进行分组。

我目前有:

form.sections.each do |section| section.fields.each do|field|
  field.user_values.group_by(&:cloned_index)
end

这目前不起作用,非常难以遵循。我确信有一种简单的方法可以做到这一点,我现在还没有看到。

1 个答案:

答案 0 :(得分:0)

form.sections.joins(fields: [:user_values]).group("user_values.cloned_index") 

您需要join表格将它们组合在一起。上述查询将返回按sections

分组的cloned_index

如果您想将fieldssections分组,请尝试

fields.joins(:user_values,:section]).where({sections: {form_id: form.id}}).group("sections.id , user_values.cloned_index")

这将返回按section IDcloned_index

分组的表单字段