1

我尝试创建一个 HBTM 关联并在创建订单时创建记录,如下所示:

订单控制器:

  def create
    @order = Order.create(params[:order])

    @order.adresses.new(:order_id => params[:id],:adress_id => params[:adress_id])
    if @order.save
      redirect_to orders_path,:notice => "Compra criada com sucesso !"
    else
      redirect_to orders_path,:notice => "Compra nao criada com sucesso cheque os erros e tente novamente !"
    end
  end

在我的订单模型和我的地址模型中:

order.rb
  has_and_belongs_to_many :adresses
adress.rb
  has_and_belongs_to_many :orders

对,但我创建了一个模型并收到此错误:

Can't mass-assign protected attributes: adress_id, order_id

所以我创建了模型 adresses_orders.rb :

  attr_accessible :order_id,:adress_id

但错误连续我不明白,因为什么

Can't mass-assign protected attributes: adress_id, order_id
4

2 回答 2

1

添加attr_accessible :order_id,:adress_id在 adress.rb 不是在 adresses_orders.rb

并且不需要定义adress_orders.rb,如果可能的话删除它

于 2013-03-03T16:28:14.183 回答
0

HABTM 之间不需要额外的模型 (adresses_orders)。一张桌子就够了。

@order.address.new

应该足够了。联想很聪明,可以为你填写地址id和订单id。

于 2013-03-03T16:02:05.787 回答