2016-07-21 7 views
0

私はカスタムフォームビルダーを作成しています。Rails Complexグループによるグループ化

フォーム has_many セクション

セクション has_many フィールド

フィールド has_many User_Values

User_Valuesテーブルには、という名前のテーブルがあります。クローンされたインデックスです。ユーザーがセクションの複製を作成しても、セクションを一意に保つ必要がある場合に使用します。

私の質問:

誰かが私には、フィールドのユーザー値のcloned_indexすることにより、すべてのセクション、グループのフィールドというクエリを記述助けることができます。

私が現在持っている:

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

これは現在、仕事とフォローするのは非常に厳しいですしません。これを行う簡単な方法があると私は確信しています。

+0

でグループ化されたフォームのフィールドを返します

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

これを試してみグループにしたい場合は上記のクエリはsectionscloned_index

でグループ化された戻りますデータモデルがこの複雑さの原因となっていることが私には分かります。あなたはそのモデルに制限されていますか? fieldとuser_valuesの間にブリッジテーブルを追加することをお勧めします。また、「スルー」関係を利用することもできます。フォームは、例えば、 'has_many:fields、through::section'を使用することができます。ビジネス上の問題を説明すると、私はおそらくより良い提案をすることができます。 –

答えて

0

テーブルをまとめてグループ化する必要があります。あなたはsectionsとともにfieldsが、それはそうsection IDcloned_index

関連する問題