首先,您應該只有兩個表,訂單和產品。 下面是我在其中一個問題中給出的一個很好的指南 - 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
什麼,將要做的就是找到你的產品保存到之前採取行動調用的順序。
寫一個答案的所有代碼是有點矯枉過正,閱讀該指南和一些練習會讓你在正確的軌道:)