在凤凰城干燥控制器

时间:2017-11-20 08:59:17

标签: controller elixir phoenix-framework dry

在我的控制器中我有current_company和`current_user。用户必须在每次请求时向当前公司发送。

所以我想,用户需要在标题中发送它。

所以在一个请求中,我有令牌(jwt)和公司。现在在我的控制器中我有

 def action(conn, _) do
    apply(__MODULE__, action_name(conn),
      [conn, conn.params, conn.assigns.current_user])
  end

我在函数调用中提取current_userdef show(conn, %{"id" => id}, current_user) do我使用它,现在我必须使用它 company = conn.assigns.current_company以获得每个职能部门的现有公司。

一切正常,我想看看是否有像我为current_user所做的DRY解决方案,所以我不需要在我的控制器上重复它。

由于

1 个答案:

答案 0 :(得分:3)

您可以将任意数量的字词添加到您传递的列表中作为apply的最后一个参数。 apply将使用与该列表中一样多的参数调用相关函数。所以,你可以这样做:

apply(__MODULE__, action_name(conn),
  [conn, conn.params, conn.assigns.current_user, conn.assigns.current_company])

然后更改该模块中的所有操作函数以接受4个参数。第四个将是现在的公司价值。