2016-04-14 77 views
0

標題聽起來很奇怪,所以是我的問題...我正在構建一個簡單的應用程序 - 我有一個餐廳模型,有多少餐,用戶可以添加到他們的購物車作爲訂單(訂單模型一頓飯的ID和數量)。現在,我希望能夠爲膳食添加選項 - 例如比薩餐會有「小」,「中」和「大」選項,這會影響這個項目的價格。你認爲如何實現這個最好的方式? 我的問題是,每餐可能有不同的選項,選項可以有不同的價格。因此,我不能只是將一個屬性「選項」添加爲一個字符串。在另一方面,如果我用另一種模式,就不會有太多的嵌套在我讀的是一個壞的實踐路線:Rails,實現模型選項

resources :restaurants do 
    resources :meals do 
     resources :options 
    end 
end 

如何避免這種情況?謝謝你的任何建議!

回答

0

沒有理由沒有選擇模式來根據需要保存每個選項 - 儘管您應該考慮餐館的淺路線,因爲餐廳本身與選項無關。因此,而不是你的路由可能類似於:

resources :restaurants, shallow: true do 
    resources :meals do 
     resources :options 
    end 
end 

如果你現在(耙路由)在你的路線看,你會看到他們是如何發生太大的變化。

但值得考慮的是,你不需要資源的選項。訪問者不會創建新的選項。他們會將現有的選項添加到集合中(用餐+選項=訂單等等) - 因此您只能在管理員名稱空間中創建用於爲菜單創建新選項的路線。

+0

我不清楚誰可以加餐......我希望用戶能夠做到這一點 - 如果有人是一家餐廳的經理,他會嘗試添加一餐而無需訪問管理面板。我發現了一個gem(spree_flexi_variants),它正是我想要的,但是,可悲的是,與我的應用程序不兼容:/ –