Rails Cancan: определение роли по умолчанию при регистрации
Недавно я добавил роли в мое приложение rails с помощью CanCanCan (перечислением), но теперь я хочу добавить роль по умолчанию при регистрации. Как мне это сделать? Это идет в контроллере или модели?
Моя модель пользователя:
class User < ActiveRecord::Base
#Defining different roles
enum role: [:Admin, :User, :Guest]
#Users can only create one scholarship application
has_one :applications
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
Моя модель способностей - есть только три роли: администратор, которого я создам, заполнив базу данных пользователем с ролью 1, а затем все остальные должны быть 2 при регистрации.
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.role = 1
can :manage, :all
elsif user.role = 2
can :manage, Application
can :manage, User
else
can :read, Static_Page
end
end
end
1 ответ
Вы можете добавить обратный звонок в вашу модель
before_create :set_default_role
private
def set_default_role
self.role ||= Role.find_by_name('your_role')
end
или в вашем случае вы можете сделать
before_create :set_default_role
def set_default_role
self.update_attribute(:role,'your_role')
end