2010-09-27 48 views
16

Rails 3.0中的默認驗證錯誤消息在哪裏?例如,ActiveRecord :: Error.default_error_messages [:taken]等價於什麼?我發現ActiveModel處理錯誤而不是ActiveRecord,但我自己找不到錯誤。Rails 3.0中的默認驗證錯誤消息在哪裏?

+0

雖然這可能不能完全回答你的問題,但它提供了一種自定義驗證錯誤消息的方法(假設它是你正在嘗試做的):http://stackoverflow.com/questions/808547/完全自定義驗證錯誤消息與導軌 – rogeriopvl 2010-09-27 22:45:32

+0

實際上,我不是試圖自定義它們,只是爲了在測試中使用它們,確保引發正確的錯誤消息。但是,您提供的鏈接非常有用 - 與早期版本相比,創建自定義郵件似乎更加複雜且不太直觀! – 2010-09-27 22:52:57

回答

22

http://github.com/rails/rails/blob/master/activemodel/lib/active_model/locale/en.yml

http://github.com/rails/rails/blob/master/activerecord/lib/active_record/locale/en.yml

:d

UPDATE:

也許你應該嘗試添加自己的自定義錯誤消息?

# de.yml 
activerecord: 
    errors: 
    messages: 
     taken: "ist bereits vergeben" 

# test_spec.rb 
... 
assert_equal(object.errors[field], I18n.t("activerecord.errors.messages.taken")) 
... 
+0

謝謝,這是另一個有用的信息。但是,如何訪問Rails程序中的信息? ActiveModel :: Errors或其他地方必須有一個方法,不是嗎? – 2010-09-28 07:58:47

+0

你想要做什麼? – Lichtamberg 2010-09-28 12:08:16

+0

例如,assert_equal(object.errors [field],ActiveRecord :: Error.default_error_messages [:taken])來測試是否給出了正確的錯誤消息。對我來說,這不是務實的重要,我只能使用文本文字,但它似乎不是「純粹」的做事方式。 – 2010-09-29 22:12:28