私は以下の設計アプローチをお探しです。私は三つのモデルツリーメニューを生成するために使用されている[地域、グループ、項目](祖先GEM)外部キーの共有
class Region < ActiveRecord::Base
has_many :groups
has_many :items
end
class Group < ActiveRecord::Base
belongs_to :region
has_many :items
has_ancestry
end
class Item < ActiveRecord::Base
belongs_to :region
belongs_to :group
end
を持っているあなたは、私は建物の目的のために、両方のグループと項目に割り当てられた領域を有して見ることができるようにmenutree:Region(s)=> Group(s)=> Item(s)。
アイテムの領域はアプリケーション全体で広く使用されますが、グループの領域はメニューのレンダリング時にのみ使用されます。
私は、グループの地域がそのアイテムの地域または実際にその子孫のいずれかと異なる可能性があるとは思いません。アイテムがグループを持たないかもしれないし、グループがアイテムのユニークなリージョンからそのリージョンを継承することもできないので、グループのアイテムのためのリージョンを継承することは適切ではないということが保証されている(異なるリージョンのアイテムが含まれていた同じグループで同じグループが異なる地域で2回出現することがあります)
誰かがこれに対して別のアプローチを提案できますか?