首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >太阳黑子:把我的Model.search代码放在哪里?

太阳黑子:把我的Model.search代码放在哪里?
EN

Stack Overflow用户
提问于 2011-11-13 13:39:52
回答 2查看 180关注 0票数 1

我将我的用户模型定义为可搜索:

代码语言:javascript
复制
class User < ActiveRecord:Base
    searchable do
        #...
    end
end

现在,我想知道在什么地方进行搜索呼叫是最好的:

代码语言:javascript
复制
User.search do
    keywords kw
    # insert a toooon of with, facets etc...
end

我不想在控制器中有这么大的块。我使用的是draper (实现装饰器模式),但它确实与模型耦合在一起,所以我不认为它是最好的地方。还是真的是这样?

我是不是应该创建一个搜索类并做一些类似这样的事情

代码语言:javascript
复制
@search = Search::UserSearch(params)

在控制器里?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-13 14:28:30

我鼓励您将其放入Search::UserSearch类中。分离关注点并遵循单一责任原则总是一个好主意。

你可以把这个类放在

搜索应用程序/模型/

/user_search.rb

(别忘了在自动加载路径中添加搜索目录)

尽管如此,我在我的一个项目中做到了这一点,我对此很满意。

票数 3
EN

Stack Overflow用户

发布于 2011-11-13 21:38:38

将搜索逻辑放在单独的类中是最好的想法。它遵循瘦控制器的思想,搜索类将在你的应用程序中重用,并且很容易测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8109863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档