audited gem:在current_user和current_admin之间切换

Ole*_*jov 2 gem ruby-on-rails devise

我正在使用gem Audited来记录对模型所做的任何更改.但是,当我试图区分普通用户和管理员正在进行的更改时,我遇到了一个问题.当current_user为nil时,我不知何故需要告诉Audited用户current_admin方法,但我想不出办法.

Dan*_*edy 6

您可以指定Audited gem用于分配的方法user.README的相关位如下:


当前用户跟踪

如果您在Rails应用程序中使用Audited,则在请求中进行的所有审计更改将自动归因于当前用户.默认情况下,Audited使用控制器中的current_user方法.

class PostsController < ApplicationController
  def create
    current_user # => #<User name: "Steve">
    @post = Post.create(params[:post])
    @post.audits.last.user # => #<User name: "Steve">
  end
end
Run Code Online (Sandbox Code Playgroud)

要使用current_user以外的方法,请将以下内容放在一个初始化器中:

Audited.current_user_method = :authenticated_user
Run Code Online (Sandbox Code Playgroud)

application_controller.rb中,您可以添加一个方法来检查nil值current_user

def current_user_or_admin
  current_user || current_admin
end
Run Code Online (Sandbox Code Playgroud)

在初始化程序中,像config/initializers/audited.rb这样的东西添加

Audited.current_user_method = :current_user_or_admin
Run Code Online (Sandbox Code Playgroud)