专家集成无法写入未知属性“角色”

pundit integration can't write unknown attribute `role`

这让我发疯。我正在尝试使用 devise 设置专家并且一切正常,直到我尝试设置默认角色。在我的例子中,默认角色是用户。当我尝试登录时,出现以下错误:

Devise::SessionsController#new

中的参数错误

app/models/user.rb:26:在`set_default_role'

这是我的 user.rb:

class User < ActiveRecord::Base
  enum role: [:user, :gig, :band, :venue, :promoter, :admin]
  after_initialize :set_default_role, :if => :new_record?

  def set_default_role
    self.role ||= :user
  end
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
    belongs_to :role
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

validates :profile, presence: true,
                    uniqueness: true,
                    format: {
                      with: /[a-zA-Z0-9-]+/,
                      message: 'Must be formated correctly.'
                    }

  before_create :set_default_role
  has_many :gigs

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

  def gravatar_url
    stripped_email = email.strip
    downcased_email = stripped_email.downcase
    hash = Digest::MD5.hexdigest(downcased_email)

    "http://gravatar.com/avatar/#{hash}"
  end
end

这是我的 rold.rb:

class Role < ActiveRecord::Base
  has_many :users
end

有什么想法吗?

显然我没有作为我的用户 table 的一部分的角色。这就是解决我的问题的方法:

rails generate migration add_role_to_user role:integer

然后:

rake db:drop db:create db:migrate db:seed