是否可以在 bcrypt-ruby(has_secure_password) gem中关闭密码确认?
答案 0 :(得分:5)
更改密码验证仅适用于创建操作。
validates :password, presence: true,
length: { minimum: 6 },
on: :create
答案 1 :(得分:2)
如果您根本不想要密码确认,则无法设置:password_confirmation字段,也不会触发身份验证。
在此处了解详情:https://github.com/rails/rails/pull/5131
Rails 4编辑:由于引入了强大的参数,因此不再相关。只需从注册表单中删除确认字段,就不会传递参数。
答案 2 :(得分:0)
has_secure_password
实际上是ActiveModel的一部分,并且它本身不是一个宝石。 bcrypt gem仅用于散列password_digest属性。
has_secure_password方法实际上非常短(source here),并且包含一行需要确认密码:
# File activemodel/lib/active_model/secure_password.rb, line 34
validates_confirmation_of :password
validates_presence_of :password_digest
因此,通过在config / initializers文件夹中创建修改版本来覆盖has_secure_password方法应该可行。注释掉“validates_confirmation_of”行将关闭密码确认。当然,您也可以重写该方法,以获取您在问题中尝试的选项哈希。