Quería comenzar a usar attr_accessible con mis modelos para detener el problema con la asignación masiva. Entiendo cómo funciona y he investigado tanto como pude.¿Cómo detiene esto la asignación masiva?
Lo que no entiendo es la diferencia entre usar update_attributes (params [: my_form]) o create (params [: my_form]) y configurar los campos uno a uno? ¿No son ambos tan vulnerables?
¿Cuál es la diferencia entre no tener attr_accessible y haciendo esto ...
@model_object = ModelObject.new
@model_object.create(params[:model_object_params])
Y tener attr_accessible y haciendo esto ...
@model_object = ModelObject.new
@model_object.field1 = params[:model_object_params][:field1]
@model_object.field2 = params[:model_object_params][:field2]
@model_object.field3 = params[:model_object_params][:field3]
@model_object.save!
¿No son estos dos métodos de creación de la registro tan vulnerable? El hacker/cracker podría enviar una url a ambos métodos y ambos harían lo mismo, ¿no?
¿O el uso de attr_accessible y la actualización de los campos uno a uno hacen algo diferente o de alguna manera se vuelven más seguros?
Ahí es donde todos los métodos que encuentro de usar attr_accessible no tienen ningún sentido para mí. Parece estar haciendo lo mismo de dos maneras diferentes. ¿Qué me estoy perdiendo?
Gracias.
Oh veo, entonces lo que hago detiene cosas como los campos created_by o creator_id de establecerse, pero sin un control más fino, los campos que se están enviando y estoy asignando podrían tener datos maliciosos. Allí es donde me estaba volviendo loco todos estos ejemplos simplemente asignaron cada campo manualmente en lugar de pasar el hash de parámetros. Ahora veo, gracias. – dsmorey