501 words
3 minutes
2.6 Apunte De Ruby On Rails – Crud Y Autenticación

1. Manejo de la Base de Datos#

Para trabajar con SQLite podemos usar DB Browser for SQLite, que nos permite visualizar y modificar tablas de manera sencilla. Por ejemplo, podemos tener una tabla llamada blue para pruebas.


2. CRUD de Productos#

Ruby on Rails facilita la creación de aplicaciones CRUD (Create, Read, Update, Delete) de manera organizada usando controladores, vistas y modelos.

2.1 Crear y Editar Productos#

El proceso de crear (new y create) y editar (edit y update) registros es muy similar. Para mantener el código limpio, podemos usar un before_action que ejecute código común antes de las acciones:

class ProductsController < ApplicationController
before_action :set_product, only: %i[show edit update destroy]
def index
@products = Product.all
end
def show
end
def new
@product = Product.new
end
def create
@product = Product.new(product_params)
if @product.save
redirect_to @product
else
render :new, status: :unprocessable_entity
end
end
def edit
end
def update
if @product.update(product_params)
redirect_to @product
else
render :edit, status: :unprocessable_entity
end
end
def destroy
@product.destroy
redirect_to products_path
end
private
def set_product
@product = Product.find(params[:id])
end
def product_params
params.require(:product).permit(:name)
end
end

Explicación:

  • before_action :set_product evita repetir Product.find(params[:id]) en varias acciones.
  • product_params define qué atributos pueden ser modificados desde un formulario (prevención de ataques de mass assignment).

2.2 Extracting Partials (Reutilización de Formularios)#

Para evitar duplicar código entre new y edit, Rails permite usar partials, que son fragmentos de vistas reutilizables.

Creamos un archivo _form.html.erb:

<%= form_with model: product do |form| %>
<div>
<%= form.label :name %>
<%= form.text_field :name %>
</div>
<div>
<%= form.submit %>
</div>
<% end %>

Luego, lo llamamos desde las vistas new y edit:

<h1>New Product</h1>
<%= render "form", product: @product %>
<%= link_to "Cancel", products_path %>
<h1>Edit Product</h1>
<%= render "form", product: @product %>
<%= link_to "Cancel", @product %>

Ventajas de los partials:

  1. Evitan errores por duplicación de código.
  2. Mantienen consistencia en toda la aplicación.
  3. Facilitan el mantenimiento: cualquier cambio en el formulario se refleja en todos los lugares donde se usa.

2.3 Eliminar Productos#

Para eliminar productos, agregamos la acción destroy al controlador y un botón en la vista:

<%= button_to "Delete", @product, method: :delete, data: { turbo_confirm: "Are you sure?" } %>

Nota: button_to genera un formulario con un solo botón que envía una petición DELETE. El atributo turbo_confirm muestra un mensaje de confirmación antes de eliminar.


3. Autenticación de Usuarios#

Por seguridad, no queremos que cualquier persona pueda crear, editar o eliminar productos. Rails permite agregar autenticación de forma rápida:

  1. Generar autenticación:
Terminal window
bin/rails generate authentication

Esto crea los modelos User y Session, con controladores y vistas necesarias.

  1. Migrar la base de datos:
Terminal window
bin/rails db:migrate
  1. Crear un usuario desde la consola Rails:
User.create! email_address: "you@example.org", password: "s3cr3t", password_confirmation: "s3cr3t"
  1. Reiniciar el servidor:
Terminal window
bin/rails server

Ahora, al visitar /products/new o /products/:id/edit, Rails pedirá autenticación.

Rails usa BCrypt para almacenar contraseñas de manera segura (hashing).


Glosario de términos#

  • Partial: Fragmento de una vista reutilizable en varias páginas. Se nombra con _ al inicio.
  • before_action: Método que se ejecuta antes de ciertas acciones del controlador para evitar duplicación de código.
  • CRUD: Acrónimo de Create, Read, Update, Delete.
  • BCrypt: Biblioteca que permite encriptar contraseñas de manera segura.
  • Mass Assignment: Intento de modificar atributos del modelo que no deberían cambiarse desde un formulario.
  • Turbo: Librería de Rails que mejora la interacción de vistas sin recargar toda la página.
2.6 Apunte De Ruby On Rails – Crud Y Autenticación
https://jangelmm.github.io/posts/informatica/ingenieriasoftware/programacion-web/2-html-xml-y-css/26-apunte-de-ruby-on-rails--crud-y-autenticación/
Author
Jesús Ángel Martínez Mendoza
Published at
2025-10-08
License
CC BY-NC-SA 4.0