仅执行记录验证(不创建它)

时间:2014-08-13 21:36:28

标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord

我有一个实现一些验证的模型。是否可以在不创建对象的情况下进行验证?

编辑:我需要的原因如下。我需要按给定的顺序创建两个记录,但如果第二个记录无效,我必须提前验证。如果是这样,则不允许创建第一条记录。

3 个答案:

答案 0 :(得分:2)

当然,只需在对象上调用valid?

user = User.new
user.valid? #=> false
user.errors #=> 'name missing...'

答案 1 :(得分:2)

甚至没有初始化对象?不。没有将对象持久化到数据库?是。使用valid?检查它是否有效,如果您想知道哪些验证失败,请使用errors

my_obj = MyModel.new(some_attr: "some_value")

unless my_obj.valid?
  puts "There were errors!"
  p my_obj.errors
end

答案 2 :(得分:2)

如果有效,

@model.valid?将返回true,否则返回false。如果验证失败,@model.errors会说出原因