Rails Cancan:在注册时定义默认角色

时间:2016-06-19 19:33:44

标签: ruby-on-rails ruby cancan user-roles cancancan

我最近使用CanCanCan(通过枚举)为我的rails应用程序添加了角色 - 但现在我想在注册时添加默认角色。我该怎么做呢?它是在控制器还是模型中?

我的用户模型:

insert into dvdNormal(dvdId, dvdTitle, year, publicRating, dvdStudioId, dvdStatusId, dvdGenreId)
(
select dvdId, dvdTitle, year, publicRating, studioId, StatusI, genreId
from dvd
join dvdStudio on d.studio = dvdStudio.studionName
join dvdStatus on d.status = dvdStatus.dvdStatusId
join dvdGenre on d.genre = dvdGenre.genre
);

我的能力模型 - 只有三个角色,我将通过为角色为1的用户播种数据库创建一个管理员,然后其他人在注册时应该是2。

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 个答案:

答案 0 :(得分:0)

您可以为模型添加回调

  before_create :set_default_role

  private
  def set_default_role
    self.role ||= Role.find_by_name('your_role')
  end

devise article

或者你可以做

 before_create :set_default_role

     def set_default_role
        self.update_attribute(:role,'your_role')
     end