集成whatwasit和ex_admin

时间:2016-12-02 07:41:32

标签: elixir phoenix-framework

我尝试使用whatwasit为所有凤凰模型引入审核日志记录。代码库使用ex_admin作为管理员部分。 根据whatwasit文档,我们需要在模型中的changeset方法中添加一个额外的参数,并使用此可选的第3个参数调用prepare_version。有了这个,我可以在保存模型时使用versions表生成一个版本(使用iex进行测试)。

但是,似乎并不是一个例子,其中resource_controller(来自ex_admin)允许钩子捕获当前登录的用户,然后在定义的结构中使用它作为第3个参数传入到changeset方法。 我试过的是在控制器块中引入一个before_filter来捕获当前用户:

controller do
  before_filter :capture_audit_settings, only: [:create]

  def capture_audit_settings(conn, params) do
    user = Coherence.current_user(conn)
    audit_settings = [whodoneit: user, whodoneit_name: user.name]

    Module.put_attribute(__MODULE__, :audit_settings, audit_settings)
    conn
  end
end

changesets create: &__MODULE__.create_changeset/2

def create_changeset(model, params) do
  tmp = Module.get_attribute(__MODULE__, :audit_settings)
  # TODO: Need to invoke the changeset/3 method that is defined in the model with tmp as the 3rd parameter
end

有人可以帮忙吗?

0 个答案:

没有答案