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.Rieles: atributo_actualización frente a atributos_actualización
rieles API dice:
para update_attribute
actualiza un solo atributo y guarda el registro sin pasar por el procedimiento de validación normal. Esto es especialmente útil para indicadores booleanos en registros existentes. El método update_attribute regular en Base se reemplaza por este cuando el módulo de validaciones está mezclado, que es por defecto.
para update_attributes
Actualiza todos los atributos de la pasado-en Hash y guarda el registro. Si el objeto no es válido, el guardado fallará y se devolverá falso.
Así que si no quiero que se valide el objeto, debería usar update_attribute. ¿Qué pasa si tengo esta actualización en un before_save? ¿Stackoverflow?
Mi pregunta es ¿es update_attribute también eludir antes guardar o solo la validación.
Además, ¿cuál es la sintaxis correcta para pasar un hash a los atributos de actualización ... echa un vistazo a mi ejemplo en la parte superior.
¿Por qué quiere poner una declaración 'update_attribute' dentro de una devolución de llamada' before_save'? No puedo pensar en una buena razón para esto. –
Tengo objetos que deben actualizarse según el monto del objeto actualizado. ¿Cuál es la mejor manera? – s84
¿Estoy en lo cierto, que los objetos que necesita actualizar son atributos del objeto que está guardando? En caso afirmativo, entonces puede simplemente configurarlos, y se actualizarán junto con el objeto que se guarda de todos modos (porque están configurados dentro de una devolución de llamada 'before_save'). F.e. en lugar de 'update_attribute (: discount, 0.1) if amount> 100' puedes hacer' discount = 0.1 if amount> 100'. 'update_attribute' llama a' save' en el objeto, lo que no es necesario en este caso, ya que la instrucción está dentro de una devolución de llamada 'before_save' y se guardará de todos modos. Espero que tenga sentido. –