Es una buena práctica cambiar la lógica del controlador al modelo. Pero en cualquier sistema complejo, esto conduce invariablemente a un archivo muy grande, incluso si la mayoría de los métodos son de una sola línea según Rails Way.¿Cómo organizar los modelos de Rails demasiado gordos?
He recurrido a dividir los modelos en otros módulos e incluirlos en el modelo original, por ejemplo, model_flags
, model_validation
, etc. ¿Alguien tiene una manera mejor?
Editar: He seleccionado una nueva respuesta que sugiere el uso de ActiveConcern. Además, para cualquier persona que esté interesada en organizar el código, este artículo, Making ActiveRecord Models Thin, debería ser de gran ayuda.
Aprendí sobre esto de la Red Dot Ruby Conference (creo por Gregg Polack), así que sí, creo que de ahora en adelante, esta es una mejor manera, que juega muy bien con el núcleo de los rieles. – Jaryl
Una nota: la terminología (del asunto, no la respuesta) terminó siendo confusa. 'ActiveSupport :: Concern' se usa para escribir modelos con código reutilizable (en muchos modelos) mientras que el patrón' concerned_with' es una forma simple de dividir un modelo en partes. Me gusta el primero (porque me indica usar la aplicación/en lugar de lib /) y no estoy seguro del segundo (parece conveniente pero conceptualmente dudoso). – tokland
Creo que vale la pena señalar que las preocupaciones son solo una forma de abordar la obesidad modelo. Como notas srboisvert, es una buena idea cuestionar el diseño de su objeto antes de elegir dividir un modelo en preocupaciones. Aquí hay un artículo que analiza eso: http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/ – tjstankus