2013-07-23 49 views
1

看起來我以一種非常微妙的方式搞亂了我的代碼......突然我的一個模型不再保存了。沒有驗證的Rails 3.0模型沒有得到保存

我試過的第一件事是看看相同的命令是否在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

你能嘗試使用''保存,而不是'save'方法!?它通常顯示明確的控制檯錯誤,顯示哪個驗證失敗。 –

+0

謝謝,我找到了。我應該只是RTFM:P – Tilo

回答

0

回答我自己的問題。

顯然我的一個before_validation方法返回false - 唉 - 愚蠢的錯誤!

這裏是ActiveRecord的文檔中有關於這一主題:返回語句

如果before_validation回調的返回值進行評估,以虛假

before_validation *,該過程將被中止, Base#保存將返回false。如果ActiveRecord :: Validations#保存!被調用它會引發一個ActiveRecord :: RecordInvalid異常。什麼都不會被附加到錯誤對象。

是的,它的工作原理如同廣告! :)

參見:http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html