Estoy tratando de averiguar el "mejor" lugar para poner la lógica de formularios de búsqueda de atributos múltiples en una aplicación de Rails. El formulario de búsqueda en cuestión tiene varios atributos que pueden tener o no valores, y los tipos de datos difieren entre los atributos. (Por ejemplo, hay opciones de búsqueda para buscar elementos con un atributo de precio entre dos números, rangos de fechas, valores de cadena, etc.) Además, el modelo en cuestión tiene varios atributos anidados a través de relaciones has_a/has_muchas y algunos de esos atributos también necesita ser buscable¿Dónde colocar la lógica de búsqueda de modelos en una aplicación Rails?
El mantra Rails del modelo grueso, el controlador delgado me hace dudar de intentar agregar la lógica de búsqueda en el controlador. Sin embargo, tampoco parece apropiado poner una lógica relacionada con la construcción de las condiciones de búsqueda en el (los) modelo (s). Finalmente, en el espíritu de DRY, dudo en codificar un montón de nombres de atributos específicos en algún módulo, ya que tendré que aplicar una lógica de búsqueda similar a varios modelos no relacionados. ¿Quizás una convención de nomenclatura de los campos de formulario en la vista de búsqueda podría usarse para construir las condiciones correctas? (Algo así como usar prefijos como "min_", "max_", "startdate_" indicando el tipo de datos y el operador de la condición de búsqueda y el sufijo es el nombre del modelo y/o atributo?)
He buscado consejo sobre esto, pero la mayoría de los consejos parece inflexible (nombres de atributos codificados, sin soporte para atributos anidados) o para usar búsquedas basadas en rutas que no creo que funcionen para mi necesidad (donde se pueden usar 5-10 parámetros en una buscar a la vez).
¿Alguna sugerencia sobre el "modo Rails" de hacer esto?
Gran pregunta. Las preguntas interesantes de Rails como esta raramente recibirán mucha atención aquí en SO. Pero si se les notara, podrían obtener excelentes respuestas. Mira mi pregunta aquí http://stackoverflow.com/questions/1068558 que en realidad está relacionado (algo). Por cierto, su idea sobre el uso de nombres de atributos no es mala, y parece ser una cosa Railsy para hacer. –
Yar, gracias por el enlace. Sus comentarios allí definitivamente me son útiles. Estaba considerando de manera similar dónde ubicaría finalmente la lógica de búsqueda una vez que descubriera cómo hacerlo. Después de publicar mi pregunta, también encontré una presentación sobre la búsqueda en Rails: http://www.scribd.com/doc/3188387/Advanced-Searching-in-Rails. Creo que la combinación de los enfoques establecidos allí, la sugerencia de Dave a continuación, y su consejo sobre cómo organizar el código que no se ajusta perfectamente al paradigma MVC formarán la base de mi solución. ¡Gracias! –
Claro, @Chris Hart, y buena suerte. –