Ventajas y desventajas del uso de devoluciones de llamada para la lógica de dominio en Rails

¿Qué ve como los pros y los contras de usar devoluciones de llamada para la lógica de dominio? (Estoy hablando en el contexto de Rails y / o proyectos de Ruby).

Para comenzar la discusión, quise mencionar esta cita delPágina de mongoides en devoluciones de llamada:

El uso de devoluciones de llamada para la lógica del dominio es una mala práctica de diseño y puede provocar errores inesperados que son difíciles de depurar cuando las devoluciones de llamada en la cadena detienen la ejecución. Nuestra recomendación es utilizarlos únicamente para asuntos transversales, como poner en cola los trabajos en segundo plano.

Me interesaría escuchar el argumento o la defensa detrás de esta afirmación. ¿Está previsto que se aplique solo a las aplicaciones respaldadas por Mongo? ¿O está destinado a aplicarse a través de tecnologías de base de datos?

Parecería queLa guía de Ruby on Rails para las validaciones y devoluciones de llamada de ActiveRecord podría estar en desacuerdo, al menos cuando se trata de bases de datos relacionales. Tomemos este ejemplo:

class Order < ActiveRecord::Base
  before_save :normalize_card_number, :if => :paid_with_card?
end

En mi opinión, este es un ejemplo perfecto de una devolución de llamada simple que implementa la lógica del dominio. Parece rápido y eficaz. Si tuviera que seguir el consejo de Mongoid, ¿a dónde iría esta lógica?

Respuestas a la pregunta(6)

Su respuesta a la pregunta