es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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”?

Tags:  , , ,

Answer

  1. Avatar for 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:

    validate :mi_atributo_es_valido, if: -> { saved_change_to_mi_atributo? }
    

    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étodo saved_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.

Comments are closed.