My model:
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
end
But when i update user, my password hash twice. I know it is because of before_save
hook, but i want to keep sequel
validating (validates_presence) real password, not result of bcrypt hash (cause BCrypt::Password.create('')
is not empty)
So i need somehow do next:
- check if password changed
- validate real password by
sequel
- save bcrypt hash of my password