我将我的用户模型定义为可搜索:
class User < ActiveRecord:Base
searchable do
#...
end
end现在,我想知道在什么地方进行搜索呼叫是最好的:
User.search do
keywords kw
# insert a toooon of with, facets etc...
end我不想在控制器中有这么大的块。我使用的是draper (实现装饰器模式),但它确实与模型耦合在一起,所以我不认为它是最好的地方。还是真的是这样?
我是不是应该创建一个搜索类并做一些类似这样的事情
@search = Search::UserSearch(params)在控制器里?
谢谢!
发布于 2011-11-13 14:28:30
我鼓励您将其放入Search::UserSearch类中。分离关注点并遵循单一责任原则总是一个好主意。
你可以把这个类放在
搜索应用程序/模型/
/user_search.rb
(别忘了在自动加载路径中添加搜索目录)
尽管如此,我在我的一个项目中做到了这一点,我对此很满意。
发布于 2011-11-13 21:38:38
将搜索逻辑放在单独的类中是最好的想法。它遵循瘦控制器的思想,搜索类将在你的应用程序中重用,并且很容易测试。
https://stackoverflow.com/questions/8109863
复制相似问题