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
Другие вопросы по тегам