Я пытаюсь найти «лучшее» место для размещения логики поиска с несколькими атрибутами в приложении Rails. Данная форма поиска имеет несколько атрибутов, которые могут иметь или не иметь значения, и типы данных различаются между атрибутами. (Например, существуют варианты поиска для поиска товаров с ценовым атрибутом между двумя числами, диапазонами дат, строковыми значениями и т. Д.) Кроме того, рассматриваемая модель имеет несколько вложенных атрибутов через отношения has_a / has_many, а некоторые из этих атрибутов также должен быть доступен для поиска.
Мантра Rails толстой модели, тонкого контроллера, заставляет меня колебаться, пытаясь объединить логику поиска в контроллере. Тем не менее, также не представляется целесообразным помещать логику, относящуюся к построению условий поиска, в модели (ях). Наконец, в духе «СУХОЙ» я не решаюсь жестко закодировать набор определенных имен атрибутов в некоторый модуль, поскольку мне нужно будет применить похожую логику поиска к нескольким несвязанным моделям. Возможно, соглашение об именовании полей формы в поисковом представлении можно использовать для построения правильных условий? (Что-то вроде использования префиксов, таких как «min_», «max_», «startdate_», указывающих тип данных и оператор условия поиска, а суффиксом является имя модели и / или атрибута?)
Я искал совета по этому вопросу, но большая часть рекомендаций кажется негибкой (жестко закодированные имена атрибутов, нет поддержки вложенных атрибутов) или использовать поиск на основе маршрутов, который, я не думаю, будет работать для моих нужд (где При поиске можно использовать сразу 5-10 параметров.
Есть какие-нибудь предложения по "Rails-способу" для этого?