ruby-on-rails mass-assignment

ruby on rails - Definición de asignación de raíles en masa y uso attr_accessible



ruby-on-rails mass-assignment (3)

Solo quiero aclarar qué es una asignación masiva y cómo codificar a su alrededor. Es la asignación en masa la asignación de muchos campos utilizando un hash, es decir, como ..

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

Y para evitar esto usas attr_accessible como:

attr_accessible :name, :email

¿Para que un campo como: admin no se pueda agregar por asignación masiva?

Pero podemos modificarlo en código por algo como:

@user.admin = true

Entonces, ¿es cierto que si no tenemos acceso accesible, entonces todo es accesible para la asignación masiva?

Y, finalmente, el punto difícil ... ¿es cierto que incluso con un attr_accessible como "attr_accessible: name" significa que todos los demás campos ahora no son accesibles para la asignación masiva?


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 opuesto a attr_accessible.

En otras palabras

attr_protected :admin

evitará que: admin sea asignado en masa, pero permitirá todos los demás campos.


La respuesta de Srdjan es correcta, asumiendo que config.active_record.whitelist_attributes está configurado como false en su config/application.rb .

Si se establece en true , todos los atributos estarán protegidos de la asignación masiva de forma predeterminada, a menos que se utilice attr_accessible o attr_protected .


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