首先,您应该只有两个表,订单和产品。 下面是我在其中一个问题中给出的一个很好的指南 - 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
什么,将要做的就是找到你的产品保存到之前采取行动调用的顺序。
写一个答案的所有代码是有点矫枉过正,阅读该指南和一些练习会让你在正确的轨道:)