2016-04-14 5 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

私は誰が食事を追加することができるかについてはっきりしていませんでした...私はユーザーにそれを可能にしたいと思います - 誰かがレストランの管理者であれば、管理パネルへのアクセスなしで食事を追加することになります。私は欲しいものを正確に行う宝石(spree_flexi_variants)を見つけましたが、残念ながら私のアプリとは互換性がありません: –

関連する問題