对餐馆菜单进行建模的最佳方法是什么,能够进行未来的编辑?

时间:2013-06-23 15:21:27

标签: ruby-on-rails activerecord model

我正在使用Active Admin创建一个网站,以允许所有者将来控制菜单。如果我们正在处理午餐菜单,我将模型结构化为一个包含如下所示项目的部分。

class Section < ActiveRecord::Base
  attr_accessible :id, :name
  has_many :items
end

class Item < ActiveRecord::Base
  attr_accessible :desc, :id, :name, :price
  belongs_to :section
end

创建&#34;部分&#34;在Active Admin中工作正常,但我在尝试创建&#34;项目时遇到错误#34;。

错误:

NoMethodError in Admin/items#new
undefined method `section_id' for #<Item:0xb5460b44>

感谢。

1 个答案:

答案 0 :(得分:2)

为了灵活性,您应该考虑不将类别创建为模型,而仅仅作为属性。一旦你创建了所有的类(例如LunchSection,DinnerSection,WineSection),没有程序员的参与就不可能创建一个新类。

我想要的是创建以下课程:

  1. 菜单 - 将菜单表示为另一张纸(因此可能会有葡萄酒菜单和菜单菜单)。菜单的“类型”应仅按名称指定。
  2. 团体或类别是同一类型的不同菜肴的容器,如午餐,甜点,葡萄酒...此外,只有一个Group类,每个单独的组都有一个实例
  3. MenuItem(或简称Item)是菜单的任何元素,属于组或菜单(这是一个设计决策 - 项目不应属于菜单和组,因为如果你想要获取所有项目,这将导致冲突菜单)