我正在Rails中实现策略模式,在Rails中,我有用户、项目、类别等模型,并且需要根据用户在视图中选择的各种算法(策略)向用户推荐项目。
我有一个推荐类,它的接口为推荐(user_id,策略),并返回item_id数组。推荐中的策略将根据用户在视图中选择的选项在运行时决定。我已经将推荐界面放置在/lib目录中,策略放在/lib/策略目录中。
我想确保我是否将文件放在适当的目录中,或者是否需要将推荐类和所有策略放在模型或其他任何地方。我真的很困惑。
发布于 2015-08-30 01:40:56
在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。
https://stackoverflow.com/questions/32292224
复制相似问题