2015-05-09 66 views
0

我努力学习多对多的关系,所以我有两个模型订单和产品,我用脚手架生成的连接表orders_products与后续迁移:轨道4多对多的联合表

create_table :orders_products do |t| 

    t.references :order 
    t.references :product 
end 

我在命令模式:

has_many :orders_products 

has_many :products, through: :orders_products 

accepts_nested_attributes_for :orders_products 

产品型号:

has_many :orders_products 

has_many :orders, through: :orders_products 

accepts_nested_attributes_for :orders_products 
在ordersproduct模型

belongs_to :order 
belongs_to :product 

为了控制器:

def new 
@order = Order.new 
@order.save 

@entry = OrdersProduct.create 
@entry.product_id = Product.find_by(name: 'default_product').id 
@entry.order_id = @order.id  

end 


def edit 
@order = Order.find(params[:id]) 

@entries = @order.products 

@order.save 

end 

private 
def order_params 
    params.require(:order).permit(:name, orders_products: [:id, :order_id, :product_id]) 
end 
end 

我得到未定义的方法`产品时,我在编辑上线

@entries = @order.products 

有人能帮助我吗?

回答

0

在订购时使用has_and_belongs_to_many :products,在产品上使用has_and_belongs_to_many :orders。在这种情况下,您不认为through适合您要完成的任务。您也可以删除has_many :orders_products行。

+0

正常工作......谢谢! – druido82