Rails,实现模型选项

时间:2016-04-14 23:28:05

标签: ruby-on-rails model nested

标题听起来很奇怪,我的问题也是如此......我正在构建一个简单的应用程序 - 我有一个餐厅模型,其中有很多餐点,用户可以根据订单添加到他们的购物车中(订单型号有餐的ID和数量) )。现在,我希望能够为膳食添加选项 - 例如披萨餐会有“小”,“中”和“大”选项,这会影响这个项目的价格。您认为实施此方法的最佳方式是什么? 我的问题是,每餐可能有不同的选择,选项可能有不同的价格。因此,我不能只将一个属性“选项”添加为字符串。另一方面,如果我使用另一个模型,那么在路线上会有太多的嵌套,我认为这是一种不好的做法:

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

如何避免这种情况?谢谢你的任何建议!!

1 个答案:

答案 0 :(得分:0)

没有理由没有选项模型可以根据需要保留您的每个选项 - 尽管您应该考虑餐馆的浅路,因为餐厅本身与选项无关。所以你的路线可能看起来像:

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

如果你现在查看路线(耙路线),你会看到它们有多大变化。

但值得考虑的是,您不需要资源选项。访客不会创建新选项。他们会将现有选项添加到集合中(meal + option = order ..或类似的东西) - 因此您可能只在admin命名空间中拥有该路由,以便为菜单创建新选项。