And*_*rew 20 validation model runtime-error ruby-on-rails ruby-on-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
Run Code Online (Sandbox Code Playgroud)
然后我尝试将模型中的所有验证更改为:on => :update.任何保存尝试都会出现相同的错误消息.
那我在这里错过了什么?如何创建空记录,然后在用户编辑时进行验证?
谢谢!
Lev*_*tix 23
通过正常用例保存无效模型是一种不好的做法.改为使用条件验证:
validates_presence_of :title, :unless => :in_first_stage?
Run Code Online (Sandbox Code Playgroud)
或者如果你有很多:
with_options :unless => :in_first_stage? do
validates_presence_of :title
validates_presence_of :author
end
Run Code Online (Sandbox Code Playgroud)
这样,夜间完整性测试就没有任何障碍,它会检查所有记录的有效性.
用于保存而不进行验证的有效用例将用于测试边缘情况,例如测试是否强制执行数据库约束.
And*_*rew 14
*叹...*
发现问题...我的一个after_validate方法调用是添加信息并重新保存模型,因此我得到的错误不是来自控制台输入,它们来自after_validate方法,它再次保存.
谢谢大家.
| 归档时间: |
|
| 查看次数: |
23376 次 |
| 最近记录: |