Где находится user.admin? определено в стартовом приложении rails-devise-pundit?

я использовалRailsApps rails-composer создать стартовое приложение rails-devise-pundit. Я все еще немного новичок в ruby ​​на рельсах и новичок в разработке, pundit и 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

Есть лиученый муж или придумать как-нибудь создать этот метод? Я видел это в документации pundit, но он просто использует его в качестве примера. Он не говорит, что метод должен быть создан или что он обрабатывает его. Это как-то использует роль enum, которая имеет: admin в качестве возможного значения? Если кто-нибудь может объяснить, как это работает, я буду признателен.

Я планирую вскоре добавить в использование rolify gem для обработки ролей вместо перечисления ролей в пользовательском классе. Может быть, я захочу сделать имена ролей, которые совершенно разные по некоторым причинам. Я хочу убедиться, что я понимаю, как заставить все работать. Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос