notifications Notificaciones

Marcar todas como leídas

Ver más

lightbulb_outline

919 veces ha sido leído este artículo

Monitorear cambios en Ruby on Rails.

Lo lees en 1 Min.

Ruby on Rails nos brinda diferentes métodos y atributos con los cuales podemos conocer si se han realizado cambios en nuestros registros.

Para este post ejecutaré las sentencias directamente en consola.

rails console

Lo primero que debemos de hacer es obtener un registro de nuestra base de datos.

user = User.first
User Load (1.0ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
=> #<User id: 1, username:"codi",>

El método changed? nos permitirá saber si el objeto ha sido modificado.

user.changed?
=> false

Al nosotros modificar por los menos el valor de un atributo, el método changed? nos retornará true.

user.username = 'Nuevo valor'
user.changed?
=> true

Si queremos conocer que atributos han sido modificados, podemos hacer uso del método changes. Este método nos retornará un hash con todos los cambios hechos en el objeto. Podemos conocer los atributos modificados, sus anteriores valores y los valores actuales.

user.changes
=> {"username" => ["codi", "Nuevo valor"] }

De igual forma podemos conocer si un atributo en concreto ha sido modificado así cómo su anterior valor. atributo_changed? y atributo_was.

user.username_changed?
=> true

user.username_was
=> "Codi"

Si nosotros persistimos los cambios en la base de datos, el objeto entrará a un estado sin cambios.

user.save
=> true

user.changed
=> false

user.changes
=> {}

Algo interesante a tomar en cuenta, es que nosotros podemos hacer uso de estos métodos, junto con los callbacks de nuestro modelo.

before_update :send_mail, if: :username_changed?

def send_mail
    #Proceso de enviar correos.
end

En este ejemplo, el método send_mail se ejecuta antes que el objeto se almacenado(actualizado) y si, solo si, el atributo username ha sido modificado.

Recomendaciones

Cursos Gratuitos 2018

Lo lees en 6 Min.

Desde nuestros inicios en 2011, hemos mantenido un compromiso para ofrecer cursos gratuitos, inde...

 

Los cursos más populares de 2018

Lo lees en 4 Min.

Continuando con el recuento del año en CódigoFacilito, y luego de haber escrito de los cursos gra...

 

Tecnologías para el 2019

Lo lees en 6 Min.

El 2018 se está terminando, y este año fuimos testigos de muchísimos nuevos lanzamientos en cuant...

 

¿Cómo realizar el deploy de una aplicación Django a Heroku?

Lo lees en 7 Min.

En esta ocasión aprenderemos a desplegar nuestro proyecto Django en los servidores de Heroku. Hem...

 

Comunidad