【发布时间】:2012-04-10 13:05:13
【问题描述】:
我在使用旧版数据库时遇到了一些稍微棘手的问题。如果我只是将数据库中的“密码”列名更改为“加密密码”,一切似乎都可以正常工作;但是,我需要保留数据库。
所以我决定使用
alias_attribute :encrypted_password, :password
现在我在控制台中收到“堆栈级别太深”错误。
我的用户模型:
class User < ActiveRecord::Base
require "digest/sha1"
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :encryptable, :encryptor => :old_cakephp_auth
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
has_many :events
before_create :add_default_values
#alias_attribute :created_at, :created
#alias_attribute :updated_at, :updated
alias_attribute :encrypted_password, :password
def add_default_values
self.created = Time.now
self.updated = Time.now
self.image = ""
self.name = self.email.split("@").first
#make normal user
self.role_id = 2
self.username = self.email.split("@").first + rand(100000000000000).to_s
self.website = ""
end
def valid_password?(password)
return false if encrypted_password.blank?
Devise.secure_compare(Digest::SHA1.hexdigest(self.password_salt+password), self.encrypted_password)
end
end
想法?谢谢!!! :)
【问题讨论】:
标签: ruby-on-rails devise stack-overflow