Introducci贸n

1

Curso Completo de Ruby on Rails: Introducci贸n y Proyecto Pr谩ctico

2

Historia y Evoluci贸n de Ruby y Ruby on Rails

Entorno de desarollo

3

M贸dulos Esenciales de Ruby on Rails

4

Instalaci贸n de Ruby on Rails en Ubuntu 20.04 LTS

5

Instalaci贸n de Ruby on Rails en macOS y Windows 10

Nuestra primera aplicaci贸n

6

Arquitectura MVC y Flujo de Peticiones en Rails

7

Creaci贸n y Configuraci贸n de Aplicaciones Web con Ruby on Rails

8

Creaci贸n de Rutas y Controladores en Ruby on Rails

9

Creaci贸n de Modelos y Migraciones en Ruby on Rails

10

Gesti贸n de Credenciales Seguras en Ruby on Rails

11

Gesti贸n de Assets y Layouts en Rails: Asset Pipeline y Webpacker

12

Uso del Generador Scaffold en Ruby on Rails

13

Migraciones y Consistencia de Modelos en Rails

14

Migraci贸n de Plantillas ERB a Haml en Ruby on Rails

15

Creaci贸n de Formularios Din谩micos con SimpleForm y Haml en Rails

16

Internacionalizaci贸n de Aplicaciones Rails con i18n y i18n-tasks

17

Debugging en Ruby on Rails: Uso de Bybug y Pry

Proyecto del curso: primeros pasos

18

Desarrollo de un Sistema de Gesti贸n de Tareas con Ruby on Rails

19

Dise帽o de Modelos de Datos para un Organizador de Tareas

20

Creaci贸n de Scaffolds y Modelos en Rails con SimpleFrame y Bootstrap

21

Internacionalizaci贸n de Formularios en Rails con i18n y SimpleForm

22

Validaciones de Modelos en Ruby on Rails

Proyecto del curso: usuarios

23

Autenticaci贸n de Usuarios con Devise en Rails

24

Migraci贸n de Llave For谩nea: Enlazar Tarea con Usuario en Rails

25

Integraci贸n Visual y Estructural en Rails: Usuario, Tarea y Participante

26

Manejo de Formularios Anidados con Cocoon en Rails

27

Formularios Din谩micos en Rails con Cocoon y Validaciones de Unicidad

28

Permisos y Accesos con KanKan en Aplicaciones Rails

Proyecto del curso: interacciones

29

Callbacks en Controladores y Modelos en Rails

30

Automatizaci贸n de Inserci贸n de Datos en Rails con db:seed

31

Env铆o de Correos con ActionMailer en Rails

32

Creaci贸n de notas din谩micas en tareas con Ruby on Rails

33

Inserciones Din谩micas de Notas con AJAX y SJR en Rails

34

Mejora de Interfaces con Bootstrap en Aplicaciones Rails

Cierre

35

Despliegue de Aplicaciones en Heroku con Ruby on Rails

36

Desarrollo de Aplicaciones Web con Ruby on Rails

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Callbacks en Controladores y Modelos en Rails

29/36
Recursos

驴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

  1. Agregar un nuevo atributo al modelo: Comenzamos agregando un nuevo atributo code de tipo string al modelo Task. Esto se realiza a trav茅s de una migraci贸n en Rails.

    rails generate migration AddCodeToTasks code:string
    
  2. Ejecutar la migraci贸n: Para aplicar esta modificaci贸n a la base de datos, ejecutamos:

    rails db:migrate
    
  3. Definir el Callback: Dentro del modelo Task, declaramos un before_create que llama al m茅todo create_code, cuya responsabilidad es asignar un c贸digo 煤nico al atributo code.

  4. 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:

  1. Busca en tu navegador preferido 'Rails Guides'.
  2. Dentro del 铆ndice, localiza Active Record Callbacks.
  3. 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.

Aportes 1

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Genial! Gracias por compartir la documentaci贸n de los callbacks disponibles 馃憤馃徑 Aqui les dejo el link tambien https://guides.rubyonrails.org/active_record_callbacks.html