没有验证的Rails 3.0模型不会被保存

时间:2013-07-23 17:32:50

标签: ruby-on-rails activerecord

看起来我以非常微妙的方式搞砸了我的代码......突然之间,我的一个模型不再保存了。

我尝试的第一件事是看看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?

以前有人见过这样的事吗?

1 个答案:

答案 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