2011-03-29 9 views
9

me sale este error "ADVERTENCIA: No se puede atributos masa-asignar protegidas: races_attributes" , cuando se sigue este http://railscasts.com/episodes/196-nested-model-form-part-1 sobre raíles 3.ADVERTENCIA: no puede masa-asignar atributos protegidos

donde las carreras son un componente de eventos. Este es mi modelos/race.rb:

class Race < ActiveRecord::Base 
belongs_to :event 

attr_accessible :name, :unit 
end 

Ésta es mi modelos/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 

alguna idea?

Respuesta

10

attr_accessible especifica que no se pueden asignar atributos en masa, por ejemplo, mediante el método save. Por lo tanto, si cambia un atributo que no está definido con attr_accessible, recibirá una advertencia porque en realidad no se guardará en la base de datos.

+0

He agregado todos los atributos que están en el formulario a cada attr_accessib respectivo le – Hosemeyer

+0

Vaya, olvidé el evento_id. ¡Dang it! – Hosemeyer

19

Más corto que el uso de attr_accessible, más seguro que usar whitelist_attributes: attr_protected

Sólo tienes que indicar los atributos protegidos, y los carriles inferirá que todos los otros pueden ser en serie asignado:

class MyClass < ActiveRecord::Base 
    attr_protected :id 
end 

(Siempre Tengo mucho más atributos que quiero asignados en masa que los que quiero proteger.)

+0

Solo como referencia, whitelist_attributes se puede establecer en application.rb: 'config.active_record.whitelist_attributes = true' en caso de que quiera hacer un hack rápido y no tener que modificar modelos individuales. Solo comenta la línea. – qix

Cuestiones relacionadas