2

所以這整個多對多讓我感到困惑。我知道如何設置它,但似乎無法找到任何可以解釋在控制器中使用它的最佳方法。Rails有很多通過

我有什麼:

產品的訂單,Orders_Products

產品和Orders表具有標準的東西(ID,姓名,時間戳等)

的Orders_Products表具有兩個id列(order_id,product_id)和數量列。

我需要做什麼:

現在,當我救我的「購物車」,你如何保存一個新的秩序,其數量每一個產品?

這是我第一次在rails中的應用程序,所以更好的解釋。

在此先感謝您的幫助!

回答

2

首先,您應該只有兩個表,訂單和產品。 下面是我在其中一個問題中給出的一個很好的指南 - guides.rubyonrails.org/association_basics.html

閱讀一下,以便熟悉rails中的關聯,但幾乎要嘗試實現在下面 -

在您的訂單模式有關係

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可以從訂單ID找到在你的產品你的控制器的url,所以你只要把方法說

def find_order 
     @order = Order.find(params[:order_id]) 
    end 

,並在任何操作之前控制器的頂部,你可以說

before_filter :find_order, :only => :youractiontosaveproducts 

什麼,將要做的就是找到你的產品保存到之前採取行動調用的順序。

寫一個答案的所有代碼是有點矯枉過正,閱讀該指南和一些練習會讓你在正確的軌道:)