我在Rails中实现策略模式,我有像User,Item,Category这样的模型,需要根据用户在视图中选择的各种算法(策略)为用户推荐项目。
我有一个推荐类,它有一个推荐接口(user_id,strategy)并返回item_id数组。建议的策略将在运行时决定,具体取决于用户在视图中选择的选项。我在/ lib目录中放置了推荐的接口,在/ lib / strategy目录中放置了策略。
我想确定是否将文件放在正确的目录中,或者我是否需要在模型或其他任何位置放置推荐类和所有策略。我真的很困惑。
答案 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。