0

カテゴリに属する​​多くのアイテムを含む多くのコンパートメントを持つボックスがあります。アイテムはコンパートメントのないボックスに属することができるため、ポリモーフィック (:itemable) です - これは私の困難かもしれません。

Box コントローラーで、DB 内のすべての Box のすべての Item を次のように呼び出すことができます。

@category_items = Item.includes(:category).group("categories.name").sum("quantity * value")

しかし、これらを現在の Box ID のみに属するものに絞り込むにはどうすればよいですか?

4

2 に答える 2

0

試す

compartment_ids = %(SELECT id FROM compartments WHERE box_id = :box_id)

@category_items = Item.includes(:category).where("(itemable_type = 'box' AND itemable_id = :box_id) OR (itemable_type = 'compartment' AND itemable_id IN (#{compartment_ids}))", :box_id => box_id).group("categories.name").sum("quantity * value")
于 2012-09-20T16:41:24.407 に答える
0

これらの行に沿って何かを試してください:

@category_items= Item.includes(:category).filter(params[:box], [:box_id,:compartment_id, "categories.name"])
于 2012-09-20T18:04:22.570 に答える