【发布时间】:2013-07-18 13:37:53
【问题描述】:
我正在使用宝石 Audited,用于记录对模型所做的任何更改。但是,当我试图区分普通用户所做的更改和管理员所做的更改时,我遇到了一个问题。当 current_user 为 nil 时,我不知何故需要将 Audited 告诉用户 current_admin 方法,但我想不出办法。
【问题讨论】:
标签: ruby-on-rails devise gem
我正在使用宝石 Audited,用于记录对模型所做的任何更改。但是,当我试图区分普通用户所做的更改和管理员所做的更改时,我遇到了一个问题。当 current_user 为 nil 时,我不知何故需要将 Audited 告诉用户 current_admin 方法,但我想不出办法。
【问题讨论】:
标签: ruby-on-rails devise gem
您可以指定 Audited gem 用于分配 user 的方法。自述文件中的相关位如下:
如果您在 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
【讨论】: