2013-06-23 34 views
0

我正在使用Active Admin創建一個網站,以便業主將來可以控制菜單。如果我們正在進行午餐菜單的製作,我已經將模型組織成了一個has_many項目部分。建立餐廳菜單模型的最佳方式是什麼?能夠進行未來的編輯?

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 

創建「一節」工作在主動管理很好,但我想創建一個「項目」時,接收錯誤。

錯誤:

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

感謝。

+0

判斷從你所描述的要求來看,似乎沒有多種方法可以模擬你需要的東西。 – depa

+0

您看到的具體錯誤是因爲您的「items」表中沒有「section_id」字段。 – GSP

+0

爲項目遷移添加section_id,然後在類Item中將section_id添加到attr_accessible。它的工作原理,謝謝你們! –

回答

2

爲了靈活性,您應該考慮不將類別創建爲模型,而僅僅將其作爲屬性。一旦你創建了所有的類(例如LunchSection,DinnerSection,WineSection),如果沒有程序員的參與就不可能創建一個新的類。

我會去的是創建以下類:

  1. 菜單 - 表示菜單作爲一個單獨的一張紙(所以有可能是一個酒單和前菜菜單)。菜單的「類型」只能由名稱指定。
  2. 組或一類是同一類型的像午餐,點心,酒......作爲WEL的不同勢菜的容器,那裏有隻有一個Group類,並有一個實例爲每個單組
  3. 菜單項(或簡稱項目)是菜單的任何元素,屬於組或菜單(這是一個設計決策 - 項目不應該屬於菜單和組,因爲如果想要獲得菜單中的所有項目,會導致衝突)
+0

這是我能找到的最接近的:[Active Admin NoMethodError](http://stackoverflow.com/questions/11073642/active-admin-nomethoderror-error),但我不認爲我可以刪除我的「部分」列並仍然達到相同的結果? –

+0

更新了最初的問題。 –

相關問題