Где находится 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 для обработки ролей вместо перечисления ролей в пользовательском классе. Может быть, я захочу сделать имена ролей, которые совершенно разные по некоторым причинам. Я хочу убедиться, что я понимаю, как заставить все работать. Благодарю.