2

このように多対多の問題は私には本当に混乱しています。私はそれを設定する方法を取得しますが、あなたのコントローラでそれを使用する最良の方法を実際に説明している場所を見つけることはできません。Rails Many Through Through

私は何を持っている:

製品、受注、Orders_Products

製品とOrdersテーブルの標準的なもの(ID、名前、タイムスタンプなど)を持っている

Orders_Productsテーブルがあり2つのid列(order_id、product_id)と数量列。私がする必要がどのような

:今

私はどのようにあなたがその量と新規注文や、各製品を保存しない私の「カート」を救いますか?

これは、レールで私の最初のアプリですので、より多くの説明が良いです。

ご協力いただきありがとうございます!

答えて

2

開始するには、注文と商品の2つのテーブルのみが必要です。 ここに私の質問の1つとして与えられた素晴らしいガイドがあります - guides.rubyonrails.org/association_basics.html

これを読んで、レールの関連性について熟知していますが、達成しようとしているものはかなりですご注文のモデルでは

関係

has_many :products 

そして、あなたの製品のモデルが関係

belongs_to :order 
を持っている - 以下の通りです

あなたの商品をオーダ​​ーにリンクさせることができます。次に、

order.products 

のような通話を行うことができ、特定の注文のすべての商品が表示されます。

お客様の移行では、注文と商品の関連付けを行うために、商品にorder_idを付ける必要があります。注文に製品を保存するという点で

、あなたはあなたのビューで何らかの形にしてORDER_IDを関連付けると、paramsハッシュを通じて注文IDを送信することにより、どちらかあなたの製品コントローラでそれを行う、とだけ

を書きます
product = Product.create(params[:product]) 

か、あなたのコントローラーでそれを行うと

product.order_id = @order.id 

@orderはあなたの製品のコントローラであなたのURLから注文IDから見つけることができると言うので、あなただけの

を言っメソッドを作ることができます
def find_order 
     @order = Order.find(params[:order_id]) 
    end 

、あなたが

before_filter :find_order, :only => :youractiontosaveproducts 

を言うと何それが行いますが、あなたがそのアクションが呼び出される前に製品を保存するために見つけることであることができます任意のアクションの前に、コントローラの上部にあります。

答えのすべてのコードを書き留めるには少し残酷ですが、そのガイドといくつかの練習は正しい軌道に乗ります:)