看起来我以非常微妙的方式搞砸了我的代码......突然之间,我的一个模型不再保存了。
我尝试的第一件事是看看Rails控制台中是否有相同的命令,令我惊讶的是它显示记录无效。
为了缩小问题范围,我评论了所有验证并再次尝试 - 但它仍然无法正常工作!
m = MyModel.find 123
=> record which looks OK to me
m.valid?
=> false
m.errors
=> #<OrderedHash {}> # An EMPTY hash??? Is that a Rails bug?
以前有人见过这样的事吗?
答案 0 :(得分:0)
回答我自己的问题。
显然我的一个before_validation方法返回false - 呃 - 愚蠢的错误!!
以下是ActiveRecord文档对该主题的评论:
before_validation *返回语句
如果before_validation回调的返回值可以被评估为false,则进程将被中止,Base#save将返回false。如果ActiveRecord :: Validations#save!被调用它会引发一个ActiveRecord :: RecordInvalid异常。什么都不会附加到错误对象。
是的,它像宣传的那样有效!! :)
另请参阅:http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html