Skip to content

post: guia para manejar modelos en ruby on rails#49

Open
LesnerVillega wants to merge 1 commit intomainfrom
post/guia-modelos-rails
Open

post: guia para manejar modelos en ruby on rails#49
LesnerVillega wants to merge 1 commit intomainfrom
post/guia-modelos-rails

Conversation

@LesnerVillega
Copy link
Contributor

@LesnerVillega LesnerVillega commented Jan 20, 2026

Descripción

Nuevo post sobre Modelos en Rails - Guía para escribir código limpio, mantenible y escalable

Contenido

  • Capsulas sobre la guia Rails de trabajar con modelos
  • Buenas Practicas
  • Codigo de Ejemplo

Imágenes

  • Metadata e imagen de fondo incluidas en el commit
image

Note

Publishes a new post _posts/2026-01-20-modelos-en-rails-guia-para-codigo-limpio-mantenible-y-escalable.md with guidance on designing Rails models.

  • Covers clear MVC responsibilities, extracting complex logic to Service Objects and Validator Objects, safer use of callbacks, small/composable scopes, and explicit associations
  • Recommends cautious use of Concerns, DB performance tips (avoid N+1 with includes, use pluck/select), and testing strategies for validations/scopes/domain methods
  • Mentions scaling patterns (DDD, hexagonal, event-driven) and includes front matter with metadata plus background/metadata images

Written by Cursor Bugbot for commit fe87032. This will update automatically on new commits. Configure here.

@LesnerVillega LesnerVillega self-assigned this Jan 20, 2026
@LesnerVillega LesnerVillega requested a review from a team as a code owner January 20, 2026 22:54
@LesnerVillega LesnerVillega force-pushed the post/guia-modelos-rails branch 2 times, most recently from d2b4406 to 8c5902c Compare January 20, 2026 23:08
@LesnerVillega LesnerVillega force-pushed the post/guia-modelos-rails branch from 8c5902c to fe87032 Compare January 20, 2026 23:10
---
Los modelos en **Ruby on Rails** son el corazón de la capa de dominio: representan datos, reglas de negocio y la lógica que hace que tu aplicación funcione. Sin embargo, a medida que una aplicación crece, es común que los modelos se conviertan en *god objects*: difíciles de mantener, probar y evolucionar.

En este artículo revisamos **una guía de prácticas de la industria** para diseñar modelos en **Rails**, siguiendo el llamado *“modo Rails”*: código claro, explícito, convencional y preparado para escalar.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revisamos o revisaremos? 🤔

---
Los modelos en **Ruby on Rails** son el corazón de la capa de dominio: representan datos, reglas de negocio y la lógica que hace que tu aplicación funcione. Sin embargo, a medida que una aplicación crece, es común que los modelos se conviertan en *god objects*: difíciles de mantener, probar y evolucionar.

En este artículo revisamos **una guía de prácticas de la industria** para diseñar modelos en **Rails**, siguiendo el llamado *“modo Rails”*: código claro, explícito, convencional y preparado para escalar.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quizá se leería mejor así:

Suggested change
En este artículo revisamos **una guía de prácticas de la industria** para diseñar modelos en **Rails**, siguiendo el llamado *“modo Rails”*: código claro, explícito, convencional y preparado para escalar.
En este artículo revisaremos una serie de **buenas prácticas en la industria** para diseñar modelos en **Rails**, siguiendo el llamado *“modo Rails”*: código claro, explícito, convencional y preparado para escalar.

Comment on lines +62 to +89
```ruby
class Order < ApplicationRecord
def finalize!
calculate_totals
apply_discounts
charge_credit_card
notify_user
update!(status: "completed")
end
end
```

✅ Buena práctica

```ruby
class CompleteOrder
def initialize(order)
@order = order
end

def call
calculate_totals
apply_discounts
charge_payment
mark_completed
end
end
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No me queda claro porqué uno es mejor que otro. 🤔


## 📌 Callbacks: poderosos, pero peligrosos

Los callbacks (`before_save`, `after_commit`, etc.) pueden generar **efectos secundarios ocultos**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explicaría primero qué es un callback, algo así como

"Los callbacks son acciones que se definen en un modelo para que se ejecuten en algún momento de la creación de un nuevo registro. Por ejemplo, el callback after_commit se ejecuta después de que el registro está listo para ser creado"


## 📌 Validaciones simples y especializadas

Las validaciones deben ser:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Acá igual, explicaría la importancia de las validaciones

Comment on lines +338 to +360
❌ Mala práctica

```ruby
class Payment < ApplicationRecord
after_create { ExternalApi.charge(self) }
end

```

Tests lentos y frágiles.

✅ Buena práctica

```ruby
class ChargePayment
def self.call(payment)
ExternalApi.charge(payment)
end
end

```

El modelo queda puro y predecible.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cómo se relaciona la buena práctica con la mala?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants