我比較新的軌道上的紅寶石,所以我現在很困惑如何爲管理員設置用戶管理系統。創建用戶與管理員和可註冊
此外,用戶應該能夠註冊自己(Devise Registerable)。
我有一個用戶控制器,使用devise_for:用戶和資源:用戶。
我可以登錄用戶,因爲我在用戶模型中使用了:可註冊標誌。
我現在想要做的是增加管理員創建用戶的能力。
如果我使用了描述的系統,當通過/ users/new以admin身份創建新用戶時,我總是收到'您已經登錄'的消息。這是來自設計的消息。
所以我按照教程www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/使用cancan來限制某些動作並創建了自己的動作設計像這裏描述的註冊控制器。
我的康康舞能力模型是這樣的:
if user.has_role?(:admin)
#admin
can :manage, :all
elsif !(user.new_record?)
#logged in but no admin
...
else
# Guest
can :create, User
end
,我的註冊控制器就像在教程
class RegistrationsController < Devise::RegistrationsController
before_filter :check_permissions, :only => [:new, :create, :cancel]
skip_before_filter :require_no_authentication
def check_permissions
authorize! :create, resource
end
end
我還添加控制器到routes.rb中
有了這個我可以使用管理員創建新用戶,但是如果我想以未登錄用戶的身份登錄(「#Guest」),我總是會收到cancan異常「拒絕訪問」的消息。如果我在CanCan異常處理中調用exception.subject,它是空的。
難道,我的控制器中的「資源」未初始化?我如何得到預期的行爲?
非常感謝您的幫助;-)