0

this is driving me crazy. i am trying to setup pundit with devise and everything works fine until i try to set a default role. in my case, the default role is user. when i try to login, i get the following error:

ArgumentError in Devise::SessionsController#new

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

here is my 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

here is my rold.rb:

class Role < ActiveRecord::Base
  has_many :users
end

any ideas?

Justin Doshay
  • 99
  • 1
  • 9

1 Answers1

0

apparently I did not have role as part of my user table. this is what fixed my issue:

rails generate migration add_role_to_user role:integer

then:

rake db:drop db:create db:migrate db:seed
Justin Doshay
  • 99
  • 1
  • 9