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 の使用を追加する予定です。何故か全く違うロール名を作りたくなるのかもしれません。すべてを機能させ続ける方法を理解していることを確認したいと思います。ありがとう。