ВНИМАНИЕ: Не удается массово назначить защищенные атрибуты - PullRequest
10 голосов
/ 29 марта 2011

Я получаю эту ошибку «ПРЕДУПРЕЖДЕНИЕ. Невозможно массово назначить защищенные атрибуты: races_attributes» при выполнении этого http://railscasts.com/episodes/196-nested-model-form-part-1 на рельсах 3.

Где гонки являются компонентом событий.Это мои модели / race.rb:

class Race < ActiveRecord::Base
belongs_to :event

attr_accessible :name, :unit
end

Это мои модели / event.rb:

class Event < ActiveRecord::Base
has_many :races, :dependent => :destroy

accepts_nested_attributes_for :races

attr_accessible :name, :date, :description, :location_name, :address_one, :address_two, :city, :state, :zip, :active, :races_attributes
end

Есть идеи?

Ответы [ 2 ]

20 голосов
/ 23 мая 2012

короче, чем при использовании attr_accessible, безопаснее, чем при использовании whitelist_attributes: attr_protected

Просто укажите защищенные атрибуты, и Rails выведет, что все остальные могут быть назначены по массе:

class MyClass < ActiveRecord::Base
  attr_protected :id
end

(У меня всегда есть намного больше атрибутов, которые я хочу присвоить по массе, чем тех, которые я хочу защитить.)

11 голосов
/ 29 марта 2011

attr_accessible указывает, что нельзя массово назначать атрибуты, например, используя метод save. Таким образом, если вы измените атрибут, который не определен с помощью attr_accessible, вы получите предупреждение, потому что он фактически не будет сохранен в базе данных.

...