我一直在寻找一种开箱即用的方法来检查特定属性是否对某个模型有效,但我没有找到任何东西,我觉得奇怪的是rails
没有提供一种非常简单的方法来进行检查。
注意:我不想使用valid?
,因为它将运行我的模型中的所有验证。如果我遗漏了什么,请告诉我,提前谢谢。
找了几个小时后,我没有找到任何具体的东西,但我确实找到了解决问题的方法。假设您有一个名为User的模型(这很常见(,并且您想验证电子邮件是否符合您现有的验证,下面是一种只检查特定属性的方法。
user = User.new(email: 'foo!!!')
User.validators_on(:email).map{ |validator| validator.validate(user) } # apply the validator to the attribute
user.errors.full_messages # will return a list of all the errors found with the specified attribute
对我来说,检查一个属性的最快解决方案是:
user = User.new(email: 'wrongEmail')
user.validate(:email) => false or true