我需要创建一个名为findUpperCaseLetter或类似
的自定义验证方法我有一个名为password的属性,属于名为User
的模型我的方法有点类似于以下内容。 password属性必须至少包含大写字母
def findUpperCaseLetter(username)
username.each_char do |character|
return true if character=~/[[:upper:]]/
end
return false
end
我想将此验证添加到用户模型
class User < ActiveRecord::Base
attr_accessible :user_name,:email, :password
validates_presence_of :user_name,:email, :password
validates_uniqueness_of :user_name,:email
????
end
我已经有以下常规赎罪
validates_format_of :password, :with => /^[a-z0-9_-]{6,30}$/i,
message: "The password format is invalid"
如何修改它以添加以下内容
密码必须至少包含一个大写字母
答案 0 :(得分:1)
您不需要自定义验证来执行此操作,您可以使用正则表达式来验证密码的格式。将其添加到您的模型
validates :password, format: { with: /^(?=.*[A-Z]).+$/, allow_blank: true }
在Rails中,您可以使用format
验证程序执行此操作,我添加了allow_blank: true
以确保字段为空时它只会抛出Can't be blank
错误消息而不是格式验证程序错误信息。
此正则表达式的工作是仅在密码包含至少一个大写字母时才允许将密码保存在数据库中。我已经在rubular上创建了一个固定链接,请点击此处http://rubular.com/r/mOpUwmELjD
希望这有帮助!