专家集成无法写入未知属性“角色”
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
这让我发疯。我正在尝试使用 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