我使用RailsApps rails-composer來創建一個rails-devise-pundit啓動器應用程序。我還是有點新的紅寶石在軌道上,更新的設計,評論家和導軌4.user.admin在哪裏?在rails-devise-pundit starter app中定義?
我在看代碼,以瞭解它是如何工作的。控制器和策略類中有很多地方是user.admin?叫做。但我找不到管理員?方法。我希望它在用戶模型中,但它不在那裏。這裏的用戶等級:
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或設計原因形成這種方法嗎?我已經看到它在權威文檔中使用,但它只是用它作爲例子。它沒有說方法需要被創建或者它處理它。它以某種方式使用具有以下作用的枚舉:admin作爲可能的值?如果任何人都可以解釋這是如何工作的,我會很感激。
我打算儘快使用rolify gem來處理角色,而不是用戶類中的角色枚舉。也許我會想出一些因爲某些原因完全不同的角色名稱。我想確保我明白如何讓所有工作都能正常進行。謝謝。
謝謝。這正是我需要知道的。我需要花時間閱讀4.1文檔。 –