我想在设计中定义一个before_filter
,如authentication_user!
。在这个项目中,我有一个user
模型,该模型使用devise
和role
生成,从而引发了用户的角色。现在我想创建一个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。我怎么解决这个问题?或者有什么正确的方法来定义它?