Ruby on rails 设计自定义密码验证导致控制台中的用户无效
我试图在一个使用Desive进行用户管理的项目中添加自定义密码验证。我成功创建用户,或手动更改用户密码。然而,如果我退出控制台并再次打开它,我的有效用户(在最后一步)将变得无效 我正在使用Desive 4.6.2和rails 5.2.0 这是我的用户模型Ruby on rails 设计自定义密码验证导致控制台中的用户无效,ruby-on-rails,devise,Ruby On Rails,Devise,我试图在一个使用Desive进行用户管理的项目中添加自定义密码验证。我成功创建用户,或手动更改用户密码。然而,如果我退出控制台并再次打开它,我的有效用户(在最后一步)将变得无效 我正在使用Desive 4.6.2和rails 5.2.0 这是我的用户模型 class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :rememberabl
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :password,
format: { with: /\A(?=.*\d)(?=.*[A-Z])(?=.*\W)[^ ]{7,}\z/,
message: 'Password should have more than 7 characters including 1 uppercase letter, 1 number, 1 special character'
}
end
然后
有什么我做错了吗?用户没有密码。最后。这就是产生错误的原因 非常相似的问题: 另外,您可以在config designe.rb上设置密码长度
config.password_length = 7..128
如果你想在designe.rb上设置密码格式,试试这个gem谢谢,我想出了一个使用自定义验证器的解决方案
class User < ApplicationRecord
validate :password_regex
private
def password_regex
return if password.blank? || password =~ /\A(?=.*\d)(?=.*[A-Z])(?=.*\W)[^ ]{7,}\z/
errors.add :password, 'Password should have more than 7 characters including 1 uppercase letter, 1 number, 1 special character'
end
end
class用户
正是我想要的!!!非常感谢你。
config.password_length = 7..128
class User < ApplicationRecord
validate :password_regex
private
def password_regex
return if password.blank? || password =~ /\A(?=.*\d)(?=.*[A-Z])(?=.*\W)[^ ]{7,}\z/
errors.add :password, 'Password should have more than 7 characters including 1 uppercase letter, 1 number, 1 special character'
end
end