【发布时间】:2013-10-09 04:44:44
【问题描述】:
我有一个 ActiveRecord 对象的集合。我希望能够为每个对象运行所有验证,而无需将它们实际保存到数据库中。我只想知道如果我将它们保存到数据库中它们是否有效。换句话说,我本质上想为我的每个对象填充errors 数据结构。有没有办法做到这一点?或者我错过了errors 集合的生命周期?
【问题讨论】:
标签: ruby activerecord
我有一个 ActiveRecord 对象的集合。我希望能够为每个对象运行所有验证,而无需将它们实际保存到数据库中。我只想知道如果我将它们保存到数据库中它们是否有效。换句话说,我本质上想为我的每个对象填充errors 数据结构。有没有办法做到这一点?或者我错过了errors 集合的生命周期?
【问题讨论】:
标签: ruby activerecord
您可以执行以下操作来检查模型是否有效:
@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 对象中,可以像我在上面的示例中那样访问该对象。如果您愿意,请在控制台中尝试这些示例以感受一下。
【讨论】:
在对象上运行#valid? 方法将运行所有验证并填充errors 结构。
dude = Person.new
unless dude.valid?
# Examine errors
end
【讨论】: