我对 ruby on rails 比较陌生,所以我现在很困惑如何为管理员设置用户管理系统。
此外,用户应该能够注册自己(设计可注册)。
我有一个用户控制器,使用 devise_for :users 和 resources :users 。
我可以注册用户,因为我在我的用户模型中使用了 :registerable, 标志。
我现在要做的是添加管理员创建用户的能力。
如果我使用所描述的系统,当以管理员身份通过 /users/new 创建新用户时,我总是会收到消息“您已登录”。这是来自设计的消息。
因此,我按照教程 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 它是空的。
可能是,我的控制器的“资源”没有初始化吗?我怎样才能得到预期的行为?
非常感谢你的帮助 ;-)