定义个人before_action

时间:2014-09-10 04:52:52

标签: ruby-on-rails ruby-on-rails-4

我想在设计中定义一个before_filter,如authentication_user!。在这个项目中,我有一个user模型,该模型使用deviserole生成,从而引发了用户的角​​色。现在我想创建一个before_filter我检查用户权限以获取控制器。下面的代码显示模型:

user.rb

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  has_one :role
  before_create :build_role
end

role.rb

class Role < ActiveRecord::Base
  belongs_to :user
end

Role有2个布尔列:superadmin,admin。我想只是superadmin有权与一些控制器联系。为此,我在application_controller.rb中定义了以下函数:

private
  def authorize_superadmin!
    unless current_user.role.superadmin?
      render :status => 411, :json => { :success => false, :info => "Not SuperAdmin" }
    end
  end

但是当我在控制器中使用before_action :authorize_superadmin!时,我在服务器日志中得到以下错误:

Completed 500 Internal Server Error in 25ms (Views: 0.0ms | ActiveRecord: 0.0ms)

我想我没有正确定义before_action。我怎么解决这个问题?或者有什么正确的方法来定义它?

0 个答案:

没有答案