我使用RailsApps rails-composer创建了一个 rails-devise-pundit 入门应用程序。我对 ruby on rails 还是有点陌生,对设计、专家和 rails 4 也比较陌生。
我正在查看代码以了解它是如何工作的。控制器和策略类中有很多地方 user.admin? 叫做。但是找不到管理员?方法。我希望它在 User 模型中,但它不存在。这是用户类:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
enum role: [:user, :vip, :admin]
after_initialize :set_default_role, :if => :new_record?
def set_default_role
self.role ||= :user
end
end
在部分 users_controller.rb 中使用:
def show
@user = User.find(params[:id])
unless current_user.admin?
unless @user == current_user
redirect_to root_path, :alert => "Access denied."
end
end
end
权威人士或设计者是否以某种方式创建了这种方法?我已经看到它在权威文档中使用,但它只是将其用作示例。它并没有说需要创建方法或处理它。是否以某种方式使用具有 :admin 作为可能值的角色枚举?如果有人能解释这是如何工作的,我将不胜感激。
我计划很快添加使用 rolify gem 来处理角色,而不是用户类中的角色枚举。也许出于某种原因,我想要制作完全不同的角色名称。我想确保我了解如何保持一切正常。谢谢。