代码之家  ›  专栏  ›  技术社区  ›  Venu Chitta

关于战略模式在铁路中的定位

  •  0
  • Venu Chitta  · 技术社区  · 9 年前

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

    我有一个Recommend类,它有一个推荐(user_id,strategy)接口,并返回item_id数组。建议中的策略将在运行时根据用户在视图中选择的选项来决定。我已经将推荐接口放在/lib目录中,将策略放在/lib/strategy目录中。

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

    1 回复  |  直到 9 年前
        1
  •  0
  •   Jeriko    9 年前

    在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 .