2011-03-11 10 views
16

Solo quiero tener claro qué es la asignación de masa y cómo codificarla. Es asignación masiva la asignación de muchos campos usando un hash, es decir, como ..Definición de asignación de masa de rieles y uso attr_accessible

@user = User.new(params[:user]) 

Y para evitar esto se utiliza attr_accessible como:

attr_accessible :name, :email 

Para que un campo como: admin no se pudo agregar por la asignación de masa?

Pero podemos modificarlo de código por algo como:

@user.admin = true 

Entonces, ¿es cierto que si no tenemos attr_accessible entonces todo es accesible para la asignación de masas?

Y finalmente el punto complicado ... ¿Es cierto que incluso con una attr_accessible como "attr_accessible: nombre" significa que todos los otros campos son ahora no accesible para la asignación de masas?

Respuesta

11

Todas sus suposiciones son correctas. Sin attr_accessible, todos los campos están abiertos a la asignación masiva. Si comienza a usar attr_accessible, solo los campos que especifique estarán abiertos a la asignación masiva.

5

Como lo señaló Srdjan, todas sus suposiciones son correctas. Para que lo sepas, también hay un método attr_protected que es lo contrario de attr_accessible.

En otras palabras

attr_protected :admin 

evitará: administrador de ser asignado en masa, pero permitirá a todos los otros campos.

2

La respuesta de Srdjan es correcta, suponiendo que config.active_record.whitelist_attributes se establece en en su config/application.rb.

Si se establece a true, todos los atributos se protegidos de la asignación de masas por defecto menos que se utilice attr_accessible o attr_protected.

Cuestiones relacionadas