ruby-on-rails – 不能跳过Rails 3中的验证?

我正在Rails 3中的一个项目上工作,我需要创建一个空的记录,将其保存到数据库而不进行验证(因为它是空的),然后允许用户编辑该记录以完成它,并从然后出来。

现在我遇到了一个非常基本的问题:在任何情况下,我似乎都不能保存模型而无需验证它。

我在控制台中尝试过以下操作:

model = Model.new
model.save(false) # Returns RuntimeError: Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
model.save( :validate => false ) # Returns same error as above

model = Model.create
model.save(false) # Same runtime error
model.save( :validate => false ) # Same runtime error

然后我尝试将模型中的所有验证更改为:on => :更新。任何尝试保存的错误消息都相同。

那么我在这里缺少什么呢?如何创建一个空记录,然后在用户编辑时进行验证?

谢谢!

正常情况下保存的无效模型是不好的做法。改用条件验证:

validates_presence_of :title, :unless => :in_first_stage?

或者如果你有很多:

with_options :unless => :in_first_stage? do
  validates_presence_of :title
  validates_presence_of :author
end

这样就没有办法进行夜间完整性测试,检查所有记录的有效性。

用于保存而无需验证的有效用例将用于测试边缘情况,例如。以测试是否强制执行数据库约束。

http://stackoverflow.com/questions/4694649/cannot-skip-validation-in-rails-3

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ruby-on-rails – 不能跳过Rails 3中的验证?