Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
Ambos actualizarán un objeto sin tener que decirle explícitamente a AR que actualice.
Rails API dice:
para update_attribute
Actualiza un solo atributo y guarda el registro sin pasar por el procedimiento normal de validación. Esto es especialmente útil para banderas booleanas en registros existentes. El método regular update_attribute en Base se reemplaza por esto cuando se mezcla el módulo de validaciones, que es el predeterminado.
para update_attributes
Actualiza todos los atributos del hash pasado y guarda el registro. Si el objeto no es válido, el guardado fallará y se devolverá falso.
Entonces, si no quiero validar el objeto, debería usar update_attribute. ¿Qué pasa si tengo esta actualización en un before_save, se apilará?
Mi pregunta es ¿update_attribute también omite el guardado anterior o solo la validación?
Además, ¿cuál es la sintaxis correcta para pasar un hash a update_attributes ... mira mi ejemplo en la parte superior.
before_save
devolución de llamada). Fe en lugar de update_attribute(:discount, 0.1) if amount > 100
ti podría hacer discount = 0.1 if amount > 100
. update_attribute
invoca save
el objeto, lo cual es innecesario en este caso, ya que la declaración está dentro de una before_save
devolución de llamada y se guardará de todos modos. Espero que tenga sentido.
update_attribute
declaración dentro de unabefore_save
devolución de llamada? No puedo pensar en una buena razón para esto.