我正在尝试找出在Rails应用程序中放置多属性搜索表单逻辑的“最佳”位置。所涉及的搜索表单具有多个属性,这些属性可能具有值,也可能没有值,并且属性之间的数据类型不同。 (例如,有搜索选项可搜索价格属性在两个数字之间,日期范围,字符串值等的项目。)此外,所涉及的模型通过has_a/has_many关系具有几个嵌套属性,其中一些属性也需要进行搜索。
Rails的口号是“厚模型,薄控制器”,这使我不愿将搜索逻辑聚合到控制器中。但是,将与构造搜索条件相关的逻辑放入模型中似乎也不合适。最后,在DRY的精神下,我不愿将大量特定属性名称硬编码到某个模块中,因为我需要将类似的搜索逻辑应用于几个不相关的模型。也许可以使用搜索视图中表单字段的命名约定来构建正确的条件? (类似于使用前缀“min_”,“max_”,“startdate_”指示数据类型和搜索条件运算符,后缀是模型和/或属性的名称?)
我已经搜索了关于此的建议,但大多数建议似乎都不灵活(硬编码属性名称,不支持嵌套属性),或者使用基于路由的搜索,我认为这对我的需求不起作用(其中可能会在一次搜索中使用5-10个参数)。
有关“Rails方式”做到这一点的建议吗?
Rails的口号是“厚模型,薄控制器”,这使我不愿将搜索逻辑聚合到控制器中。但是,将与构造搜索条件相关的逻辑放入模型中似乎也不合适。最后,在DRY的精神下,我不愿将大量特定属性名称硬编码到某个模块中,因为我需要将类似的搜索逻辑应用于几个不相关的模型。也许可以使用搜索视图中表单字段的命名约定来构建正确的条件? (类似于使用前缀“min_”,“max_”,“startdate_”指示数据类型和搜索条件运算符,后缀是模型和/或属性的名称?)
我已经搜索了关于此的建议,但大多数建议似乎都不灵活(硬编码属性名称,不支持嵌套属性),或者使用基于路由的搜索,我认为这对我的需求不起作用(其中可能会在一次搜索中使用5-10个参数)。
有关“Rails方式”做到这一点的建议吗?