¿Cómo evitar la actualización de un único atributo en Rails?

Cuando se envía un formulario, ¿cómo evitar que un solo atributo se actualice en Rails? Todos los demás atributos deben ser actualizados.

¿Es before_save , attr_reader o alguna otra forma?

Si usa before_save , ¿cómo acceder al hash de atributos?

Rieles 3.0.7

Echa un vistazo a attr_protected .

 Class YourModel << ActiveRecord::Base attr_protected :the_one_column, as: :update # ... end 

Ahora, como parte de una llamada a update_attributes , debe especificar el :update rol de :update , por ejemplo

 klass = YourModel.find(some_id) klass.update_attributes(params[:your_model], as: :update) 

Si :the_one_column se configura en los params pasados ​​a update_attributes , generará un error.

Como @Beerlington mencionó en su comentario a su pregunta, también debe consultar attr_accessible . En general, es mejor pasar los 30 minutos recorriendo todos los modelos de los atributos de la lista blanca de su aplicación utilizando attr_accessible que con la lista negra de atributos específicos con attr_protected .

Otra opción es simplemente hacer esto en su controlador:

 klass.update_attributes( params[:your_model].except(:attributes_to_avoid) ) 
    Intereting Posts