1

看起来我以一种非常微妙的方式弄乱了我的代码......突然我的一个模型不再保存了。

我尝试的第一件事是查看相同的命令是否在 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?

有没有人见过这样的东西?

4

1 回答 1

0

回答我自己的问题。

显然我的 before_validation 方法之一返回了错误 - 呃 - 愚蠢的错误!

以下是 ActiveRecord 文档关于该主题的内容:

before_validation* 返回语句

如果 before_validation 回调的返回值可以评估为 false,则该过程将中止并且 Base#save 将返回 false。如果 ActiveRecord::Validations#save! 调用它会引发 ActiveRecord::RecordInvalid 异常。不会将任何内容附加到错误对象。

是的,它像宣传的那样有效!:)

另见:http ://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

于 2013-07-23T17:53:02.133 回答