【问题标题】:Elixir/Phoenix 1.3 splitting contextElixir/Phoenix 1.3 拆分上下文
【发布时间】:2018-08-02 08:29:50
【问题描述】:

在 Phoenix 1.3 中建议将所有业务逻辑放入上下文中,但是一个上下文可以处理很多实体(我不知道正确的词,因为“模型”在 Phoenix 1.3 中不再存在)并且它会增长很快。将上下文拆分为多个文件的正确方法是什么?

编辑

我有帐户上下文和两个实体:用户和凭据。即使有这两个实体,上下文看起来也有点复杂。我必须滚动用户的功能才能到达凭证的功能。现在这不是一个真正的问题,但我想在一个上下文中可以有超过 2 个实体,然后它可能真的很大。还是我错了?

这个例子来自 phoenix 的 hexdocs.pm

【问题讨论】:

  • 您可能需要在多个上下文之间拆分实体。你能告诉我们你的实体是什么吗?
  • @Tyler,我编辑了问题

标签: elixir phoenix-framework


【解决方案1】:

这是一个非常重要的问题,但实际上这完全取决于您喜欢如何组织代码。 Phoenix 不会影响您的任何风格,甚至上下文也只是有意设计代码的建议。

现在您的结构如下所示:

lib
  > accounts
    > accounts.ex
      user.ex
      credentials.ex

因此,您可以将credentialsusers 拆分为完全隔离的上下文,这可能不是最好的主意,因为它们与当前的Accounts 上下文相关,或者尝试从将它们作为子上下文引入中获益。您可能会陷入与用户和凭据冲突的名称。还是可以的。

credentials 可能成为authentication 上下文的一部分,如果你想这样设计的话。有几种方法可供您解决。

假设你想保持当前结构,但引入子上下文,但最后你仍然想通过主上下文调用它们,你可以在这里使用defdelegate

最好的建议是考虑您的代码接下来会发生什么,并尝试以某种合乎逻辑的方式将所有内容排序 - credentials 仅适用于用户,但它们是授权用户的一种方式,因此您可以将它们分组,或者将它们作为授权或帐户上下文的架构和子上下文。

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2018-05-22
    • 1970-01-01
    • 2017-02-05
    • 2019-06-15
    相关资源
    最近更新 更多