我正在使用宝石 Audited,用于记录对模型所做的任何更改。但是,当我试图区分普通用户和管理员正在进行的更改时,我遇到了一个问题。当current_user为nil时,我不知何故需要告诉Audited用户current_admin方法,但我想不出办法。
答案 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
def current_user_or_admin
current_user || current_admin
end
在初始化程序中,像 config / initializers / audited.rb 之类的内容
Audited.current_user_method = :current_user_or_admin