2010-09-27 165 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