【问题标题】:pundit integration can't write unknown attribute `role`权威集成无法编写未知属性“角色”
【发布时间】:2015-04-26 23:11:36
【问题描述】:

这快把我逼疯了。我正在尝试使用 devise 设置权威,并且在我尝试设置默认角色之前一切正常。就我而言,默认角色是用户。当我尝试登录时,出现以下错误:

ArgumentError in Devise::SessionsController#new

app/models/user.rb:26:in `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

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 devise pundit


    【解决方案1】:

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

    rails generate migration add_role_to_user role:integer
    

    然后:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-14
      • 2014-01-11
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多