鉴于以下模型:
class Menu < ActiveRecord::Base
has_many :items
end
class Items < ActiveRecord::Base
has_and_belongs_to_many :menus
end
每个菜单都需要为其项目设置单独的排序顺序
我通常会在联接表menus_items
我是否需要创建新模型来存储此信息并添加:through
关系?
在Rails中设置它的最佳方法是什么?
答案 0 :(得分:2)
是的,您需要创建一个新的MenuItem
类和相关的menu_items表。
class Menu
has_many :menu_items, :order => 'sort_order'
has_many :items, :through => :menu_items
end
class MenuItem
belongs_to :menu
belongs_to :item
end
class Item
has_many :menu_items
has_many :menus, :through => :menu_items
end
您的menu_items表应包含menu_id
,item_id
和sort_order
的列(或您使用的任何内容作为排序列的名称)。但请记住,您需要处理sort_order
的设置。您可以使用acts_as_list plugin或自己滚动逻辑,具体取决于您的要求。