我将用户模型定义为可搜索:
class User < ActiveRecord:Base
searchable do
#...
end
end
现在,我想知道实际搜索电话的最佳位置是什么:
User.search do
keywords kw
# insert a toooon of with, facets etc...
end
我不想在控制器中有这么大的块。 我正在使用draper(实现装饰器模式),但它真的耦合到模型,所以我认为它不是最好的地方。或者是吗?
我应该只创建一个Search类并执行类似
的操作@search = Search::UserSearch(params)
在控制器中?
谢谢!
答案 0 :(得分:3)
我建议你把它放在Search :: UserSearch类中。将问题分开并遵循单一责任原则总是一个好主意。
您可以将此课程置于
中应用程序/模型/搜索/ user_search.rb
(不要忘记将搜索目录添加到自动加载路径)
尽管如此,我正在我的一个项目中这样做,我很高兴。
答案 1 :(得分:1)
将搜索逻辑放在单独的类中是最好的主意。它遵循瘦的控制器的想法,搜索类将在您的应用程序中重用,并且很容易测试。