has_secure_password中的可选密码确认

时间:2012-04-02 16:55:24

标签: ruby-on-rails ruby-on-rails-3

是否可以在 bcrypt-ruby(has_secure_password) gem中关闭密码确认?

3 个答案:

答案 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”行将关闭密码确认。当然,您也可以重写该方法,以获取您在问题中尝试的选项哈希。