我有一组ActiveRecord对象。我希望能够为每个对象运行所有验证,而不实际将它们保存到数据库中。我只是想知道他们是否有效我将它们保存到数据库中。换句话说,我基本上想要为每个对象填充errors
数据结构。有没有办法做到这一点?或许我遗漏了errors
集合的生命周期?
答案 0 :(得分:24)
您可以执行以下操作来检查模型是否有效:
@user = User.new
if @user.valid?
#do things
如果您想查看错误是什么,可以执行以下操作:
@user = User.new
unless @user.valid?
@user.errors.each {|k, v| puts "#{k.capitalize}: #{v}"}
调用“.valid?”方法运行您的验证,将所有错误放入ActiveRecord :: Errors对象,可以像上面的示例中那样访问它。如果您愿意,可以在控制台中尝试使用这些示例,以便了解它。
答案 1 :(得分:3)
在对象上运行#valid?
方法将运行所有验证并填充errors
结构。
dude = Person.new
unless dude.valid?
# Examine errors
end