Rails 3 acceptpts_nested_attributes_for создает «ПРЕДУПРЕЖДЕНИЕ: невозможно массовое назначение защищенных атрибутов:» - PullRequest
1 голос
/ 10 августа 2011

У меня есть две следующие модели:

class Position < ActiveRecord::Base
  include Stocks
  belongs_to :trade_set
  attr_accessible :symbol, :percent, :shares, :open, :close, :trade_set_id, :name

  def set_stock_info(symbol, name)
    self.name = name
    self.symbol = symbol
  end

  def set_position_values(percent, shares, open, close)
    self.percent  = percent
    self.shares  = shares
    self.open  = open
    self.close  = close
  end

и

class Trade_Set < ActiveRecord::Base
  belongs_to :user
  has_many :positions, :dependent => :destroy
  has_many :comments, :dependent => :destroy
  belongs_to :trading_period
  accepts_nested_attributes_for :positions, :allow_destroy => true
  attr_accessible :workflow_state, :cash, :open, :close, :title,
                  :description, :log, :positions_attributes, :trading_period_id
  #...
end

Моя схема для модели Positions:

create_table "positions", :force => true do |t|
    t.string   "symbol"
    t.integer  "percent"
    t.integer  "shares"
    t.decimal  "open"
    t.decimal  "close"
    t.integer  "trade_set_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "name"
  end

Если я "сообщение"(обновить) запись Trade_Set с тремя записями позиции. В журнале появляется следующее предупреждение:

  Position Load (2.8ms)  SELECT "positions".* FROM "positions" WHERE ("positions".trade_set_id = 7)
WARNING: Can't mass-assign protected attributes: created_at, updated_at
WARNING: Can't mass-assign protected attributes: created_at, updated_at
WARNING: Can't mass-assign protected attributes: created_at, updated_at

Почему-то я правильно не использую accepts_nested_attributes_for?Я не пытаюсь вносить какие-либо изменения в created_at или updated_at в любом месте моего кода.

...