Phoenix - 控制器和视图之间的回调操作

问题描述

我正在为我们的系统构建一个管理工具应用程序。 我想记录每个用户的每一个动作。

这就是我所做的

defmodule AdminToolWeb.UserController do
  use AdminToolWeb,:controller
  
  ...

  def delete(conn,%{"id" => id}) do
    current_user = Guardian.Plug.current_resource(conn)

    with %User{} <- user = Accounts.get_user(id) do
      Accounts.delete_user(user)

      conn
      |> put_flash(:info,"#{user.id} deleted.")
      |> Activities.log(current_user)
      |> redirect(to: Routes.user_path(conn,:index))
    end
  end

  ...
end

问题是我必须在我的应用程序中的每个控制器的每个操作中使用管道 |> Activity.log(current_user)

有没有办法实现这样的东西? Controller -> (ActivityLogPlugOfSorts) -> View 使用自定义插件并像这样调用它?

defmodule AdminToolWeb.UserController do
  use AdminToolWeb,:controller
  import AdminToolWeb.Plugs.Activities

  plug :log

...

但是应该在控制器和视图之间调用。

或者我应该把一个函数放在一个视图模块中?

我希望有更好的方法。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)