Callbacks en Controladores y Modelos en Rails
Clase 29 de 36 • Curso de Introducción a Ruby on Rails
Contenido del curso
Entorno de desarollo
Nuestra primera aplicación
- 6

Arquitectura MVC y Flujo de Peticiones en Rails
07:22 min - 7

Creación y Configuración de Aplicaciones Web con Ruby on Rails
11:18 min - 8

Creación de Rutas y Controladores en Ruby on Rails
10:15 min - 9

Creación de Modelos y Migraciones en Ruby on Rails
13:12 min - 10

Gestión de Credenciales Seguras en Ruby on Rails
11:57 min - 11

Gestión de Assets y Layouts en Rails: Asset Pipeline y Webpacker
12:31 min - 12

Uso del Generador Scaffold en Ruby on Rails
10:51 min - 13

Migraciones y Consistencia de Modelos en Rails
05:57 min - 14

Migración de Plantillas ERB a Haml en Ruby on Rails
08:47 min - 15

Creación de Formularios Dinámicos con SimpleForm y Haml en Rails
12:19 min - 16

Internacionalización de Aplicaciones Rails con i18n y i18n-tasks
09:29 min - 17

Debugging en Ruby on Rails: Uso de Bybug y Pry
09:03 min
Proyecto del curso: primeros pasos
- 18

Desarrollo de un Sistema de Gestión de Tareas con Ruby on Rails
05:35 min - 19

Diseño de Modelos de Datos para un Organizador de Tareas
05:46 min - 20

Creación de Scaffolds y Modelos en Rails con SimpleFrame y Bootstrap
10:08 min - 21

Internacionalización de Formularios en Rails con i18n y SimpleForm
11:03 min - 22

Validaciones de Modelos en Ruby on Rails
10:42 min
Proyecto del curso: usuarios
- 23

Autenticación de Usuarios con Devise en Rails
11:42 min - 24

Migración de Llave Foránea: Enlazar Tarea con Usuario en Rails
05:46 min - 25

Integración Visual y Estructural en Rails: Usuario, Tarea y Participante
09:54 min - 26

Manejo de Formularios Anidados con Cocoon en Rails
12:25 min - 27

Formularios Dinámicos en Rails con Cocoon y Validaciones de Unicidad
09:36 min - 28

Permisos y Accesos con KanKan en Aplicaciones Rails
14:13 min
Proyecto del curso: interacciones
- 29

Callbacks en Controladores y Modelos en Rails
Viendo ahora - 30
Automatización de Inserción de Datos en Rails con db:seed
07:38 min - 31

Envío de Correos con ActionMailer en Rails
13:25 min - 32

Creación de notas dinámicas en tareas con Ruby on Rails
17:08 min - 33

Inserciones Dinámicas de Notas con AJAX y SJR en Rails
09:12 min - 34
Mejora de Interfaces con Bootstrap en Aplicaciones Rails
16:19 min
Cierre
¿Qué es un Callback en programación?
En el mundo de la programación, los callbacks desempeñan un papel fundamental en la gestión del flujo de control de una aplicación. Son esencialmente funciones que se ejecutan en un momento específico del ciclo de vida de una aplicación, permitiendo así la ejecución de un cierto conjunto de instrucciones antes o después de una acción principal. Esto es especialmente útil en la web, donde las peticiones y respuestas a menudo requieren ajustes o verificaciones adicionales.
En el contexto de un controlador, los callbacks como before action y after action se utilizan para ejecutar lógica antes o después de que un controlador realice su tarea principal. Estos permiten, por ejemplo, configurar la internacionalización o autenticar usuarios antes de continuar con una acción específica. Sin embargo, los callbacks no se limitan solo a los controladores; también se aplican a los modelos, permitiendo personalizar el comportamiento de persistencia de una entidad en la base de datos.
¿Cómo implementar un Callback en un modelo de Rails?
Rails facilita la utilización de callbacks en modelos, lo que nos permite intervenir en su ciclo de vida, como las acciones de creación, actualización o eliminación. Abordemos un ejemplo de cómo agregar un callback al modelo Task que genera automáticamente un código único antes de guardar una tarea.
# Modelo Task con callback before_create
class Task < ApplicationRecord
before_create :create_code
private
def create_code
# Generar código basado en el id del propietario
self.code = "#{owner_id}#{Time.now.to_i.to_s(36)}#{SecureRandom.hex(8)}"
end
end
Paso a paso para generar un código único
-
Agregar un nuevo atributo al modelo: Comenzamos agregando un nuevo atributo
codede tipo string al modeloTask. Esto se realiza a través de una migración en Rails.rails generate migration AddCodeToTasks code:string -
Ejecutar la migración: Para aplicar esta modificación a la base de datos, ejecutamos:
rails db:migrate -
Definir el Callback: Dentro del modelo
Task, declaramos unbefore_createque llama al métodocreate_code, cuya responsabilidad es asignar un código único al atributocode. -
Implementar el método
create_code: Generamos un código compuesto por múltiples elementos para asegurar su unicidad:- ID del propietario: Utilizar el ID de usuario como prefijo.
- Estampa de tiempo: Convertir el tiempo actual a una cadena en base 36 para reducir su longitud.
- Código aleatorio seguro: Utilizar
SecureRandom.hex(8)para añadir un componente aleatorio.
Este enfoque no solo asegura que cada tarea tenga un código único, sino que también ilustra la flexibilidad y poder que ofrecen los callbacks en procesos de persistencia en Rails.
¿Dónde encontrar más información sobre Callbacks en Rails?
Para explorar más sobre los callbacks disponibles en Rails, es recomendable revisar la guía oficial de Rails, concretamente la sección de Active Record Callbacks. Aquí se lista un catálogo exhaustivo de callbacks que se pueden utilizar para modificar el ciclo de vida de los modelos.
Para acceder a esta guía:
- Busca en tu navegador preferido 'Rails Guides'.
- Dentro del índice, localiza
Active Record Callbacks. - En la sección 3,
Available Callbacks, se presentan todos los métodos y sus usos específicos.
A través de estos recursos, es posible profundizar en cómo los callbacks pueden optimizar los procesos de manejo de datos, permitiendo la ejecución de lógica personalizada en diversas etapas del ciclo de vida de un modelo. Encourage the exploration and adoption of these powerful tools to enhance your application's functionality.