【发布时间】:2014-03-05 22:24:44
【问题描述】:
我的模特:
class User < Sequel::Model
self.raise_on_save_failure = false
plugin :validation_helpers
def validate
super
validates_format /@/, :email
validates_presence [:email, :password]
validates_unique :email
end
def before_save
super
self[:password] = BCrypt::Password.create(self[:password])
end
结束
但是当我更新用户时,我的密码哈希两次。我知道这是因为before_save 挂钩,但我想保留sequel 验证(validates_presence)真实密码,而不是bcrypt 哈希的结果(因为BCrypt::Password.create('') 不为空)
所以我需要以某种方式做下一步:
- 检查密码是否更改
- 通过
sequel验证真实密码 - 保存我的密码的 bcrypt 哈希
【问题讨论】:
标签: ruby sinatra sequel bcrypt-ruby