分配角色以设计用户注册 Rolify
Assign roles to devise user on registration with Rolify
我在一个需要管理员和普通用户的系统上工作,我正在尝试使用 devise、rolify 和 cancancan.My 问题来实现系统,我想为第一个签名的用户添加管理员角色在系统上,但到目前为止我只能通过 rails 控制台实现这一点,我也覆盖了注册控制器。以下是我到目前为止所尝试的。
User.rb
class User < ApplicationRecord
resourcify
rolify
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :invitable, :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
role.rb
class Role < ApplicationRecord
has_and_belongs_to_many :users, :join_table => :users_roles
belongs_to :resource,
:polymorphic => true,
:optional => true
validates :resource_type,
:inclusion => { :in => Rolify.resource_types },
:allow_nil => true
scopify
end
注册控制器
class RegistrationsController < Devise::RegistrationsController
def create
super
@number_of_users = User.all.count
if @number_of_users == 0
resource.add_role :admin
end
end
end
我能够让它工作,对于那些将来可能会遇到此类问题的人,这是我的解决方案
注册控制器
after_action :assign_role, only:[:create]
def assign_role
@number_of_users = User.all.count
if @number_of_users == 1
current_user.add_role :admin
end
end
我喜欢公认的解决方案,但为了让事情井井有条,我会像这样将它放在用户模型中:
after_create :assign_role
def assign_role
if User.all.count == 1
User.first.add_role :admin
end
end
我在一个需要管理员和普通用户的系统上工作,我正在尝试使用 devise、rolify 和 cancancan.My 问题来实现系统,我想为第一个签名的用户添加管理员角色在系统上,但到目前为止我只能通过 rails 控制台实现这一点,我也覆盖了注册控制器。以下是我到目前为止所尝试的。
User.rb
class User < ApplicationRecord
resourcify
rolify
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :invitable, :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
role.rb
class Role < ApplicationRecord
has_and_belongs_to_many :users, :join_table => :users_roles
belongs_to :resource,
:polymorphic => true,
:optional => true
validates :resource_type,
:inclusion => { :in => Rolify.resource_types },
:allow_nil => true
scopify
end
注册控制器
class RegistrationsController < Devise::RegistrationsController
def create
super
@number_of_users = User.all.count
if @number_of_users == 0
resource.add_role :admin
end
end
end
我能够让它工作,对于那些将来可能会遇到此类问题的人,这是我的解决方案
注册控制器
after_action :assign_role, only:[:create]
def assign_role
@number_of_users = User.all.count
if @number_of_users == 1
current_user.add_role :admin
end
end
我喜欢公认的解决方案,但为了让事情井井有条,我会像这样将它放在用户模型中:
after_create :assign_role
def assign_role
if User.all.count == 1
User.first.add_role :admin
end
end