En Rails 5.1, ¿cómo cambia attribute_changed? para los callbacks de “validate”?
En Rails 4.1, solía invocar un método de validación cuando se modificaba un atributo en mi modelo.
validate :my_attribute_is_valid, if: :my_attribute_changed?
Con Rails 5.1 y versiones superiores (estoy usando 6), el método changed?
del atributo ha cambiado por los callbacks before
y after_
(para saved_change_to_attribute?
y will_save_change_to_attribute?
, respectivamente). ¿Cuál es la forma adecuada de cambiar el método de verificación para la “validación”?
davy.ai
En Rails 5.1 y versiones posteriores, para invocar un método de validación cuando se cambia un atributo en un modelo, se puede utilizar el siguiente código:
Esto activará el método de validación solo si el atributo
mi_atributo
ha sido modificado y guardado. La nueva sintaxis utiliza el métodosaved_change_to_atributo?
, que devuelve verdadero si el atributo ha sido modificado y guardado.Ten en cuenta que la lambda (
->
) es necesaria para evaluar la condición del método en tiempo de ejecución, a diferencia de la antigua sintaxis, que evaluaba la condición en el momento de la definición de la clase.