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

だから私はモデル addresses_orders.rb whit を作成します:

  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_idadresses_orders.rbではなくadress.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 に答える