所以我一直在解决这个我一直遇到的错误,我终于发现了导致它的原因.当我打电话时,我一直都有这样的印象
@my_model.save(false)
我将跳过我的ActiveRecord验证.事实证明这是部分正确的.我的对象正在保存到数据库DESPITE我的ActiveRecord验证.我的问题存在,因为我的一个验证在验证过程中修改了一个子模型(这是一个24小时位置的调度应用程序,因此当保存午餐时,我会在他们保存的那天检查它们,第二天同时确保用户并不意味着"凌晨2点"换班.
我的问题是:有没有办法实际跳过我的验证并直接进入数据库?这是正常的ActiveRecord行为还是我应该深入了解我的验证?或者我运气不好,需要重新编写我的验证?
我的问题存在是因为我的一个验证在验证过程中修改了其中一个子模型
解决这个问题,那么你的问题就会消失.验证永远不应该修改对象!
您可能希望在将记录保存到数据库之前使用before_create或其他回调与记录进行交互,而不是尝试在验证程序中执行此操作.
以下是有关ActiveRecord回调的文档:http: //api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
还有一个关于使用回调的指南,其中包含有关如何跳过它们的一些细节:http: //guides.rubyonrails.org/activerecord_validations_callbacks.html
我同意,你应该使用回调来与记录进行交互.验证不应该修改对象..
如果你仍然觉得有必要这样做..使用
myobject.save_without_validation