Ruby 运行ActiveRecord验证而不保存

Ruby 运行ActiveRecord验证而不保存,ruby,activerecord,Ruby,Activerecord,我有一组ActiveRecord对象。我希望能够为每个对象运行所有验证,而不实际将它们保存到数据库中。我只是想知道,如果我将它们保存到数据库中,它们是否有效。换句话说,我本质上希望为我的每个对象填充errors数据结构。有办法做到这一点吗?或者,我可能遗漏了errors集合的生命周期的某些内容。在对象上运行\valid?方法将运行所有验证并填充errors结构 dude = Person.new unless dude.valid? # Examine errors end 可以执行以下操

我有一组ActiveRecord对象。我希望能够为每个对象运行所有验证,而不实际将它们保存到数据库中。我只是想知道,如果我将它们保存到数据库中,它们是否有效。换句话说,我本质上希望为我的每个对象填充
errors
数据结构。有办法做到这一点吗?或者,我可能遗漏了
errors
集合的生命周期的某些内容。

在对象上运行
\valid?
方法将运行所有验证并填充
errors
结构

dude = Person.new
unless dude.valid?
  # Examine errors
end

可以执行以下操作来检查模型是否有效:

@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对象中,该对象可以像我在上面的示例中所做的那样进行访问。如果您愿意,请在控制台中尝试一下这些示例,以便对其有所了解。

按照类似的思路,我正在尝试显示一个基于记录的发布链接,该链接是否对发布有效。在我的验证中,我使用validates:if格式。有没有简单的方法将属性更改为:true,然后检查它是否对发布有效?例如,post=post.new(:title=>“title”,:published=>false)post.published=true,如果post.valid?post.published=false