【问题标题】:Can't mass-assign protected attributes HABTM Record无法批量分配受保护的属性 HABTM 记录
【发布时间】:2013-03-03 15:49:30
【问题描述】:

我尝试创建一个 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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.1 ruby-on-rails-3.2


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      @order.address.new
      

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

      【讨论】:

        猜你喜欢
        • 2011-09-04
        • 1970-01-01
        • 2012-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多