audited gem:在current_user和current_admin之间切换

时间:2013-07-18 13:37:54

标签: ruby-on-rails devise gem

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

1 个答案:

答案 0 :(得分: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

要使用current_user以外的方法,请将以下内容放入初个化程序中:

Audited.current_user_method = :authenticated_user

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

中的nil值
def current_user_or_admin
  current_user || current_admin
end

在初始化程序中,像 config / initializers / audited.rb 之类的内容

Audited.current_user_method = :current_user_or_admin