关于铁路战略模式的位置

时间:2015-08-30 01:03:22

标签: ruby-on-rails ruby strategy-pattern

我在Rails中实现策略模式,我有像User,Item,Category这样的模型,需要根据用户在视图中选择的各种算法(策略)为用户推荐项目。

我有一个推荐类,它有一个推荐接口(user_id,strategy)并返回item_id数组。建议的策略将在运行时决定,具体取决于用户在视图中选择的选项。我在/ lib目录中放置了推荐的接口,在/ lib / strategy目录中放置了策略。

我想确定是否将文件放在正确的目录中,或者我是否需要在模型或其他任何位置放置推荐类和所有策略。我真的很困惑。

1 个答案:

答案 0 :(得分:0)

在Rails中,所有特定于域的代码都属于/app,而/lib是为外部依赖项和共享代码保留的。

您可能会发现“服务对象”很有用,它们属于/app/services。它们不是ActiveRecord类,没有数据库,它们通常与其他模型一起工作(执行服务)。

您将找到有关如何构建服务的大量信息,例如http://sporto.github.io/blog/2012/11/15/a-pattern-for-service-objects-in-rails/。还有一个优秀的Railscast(仅限订阅者)http://railscasts.com/episodes/398-service-objects