【问题标题】:Where are Default Validation Error Messages in Rails 3.0?Rails 3.0 中的默认验证错误消息在哪里?
【发布时间】:2011-04-18 00:37:29
【问题描述】:

Rails 3.0 中默认的验证错误消息在哪里?例如,ActiveRecord::Error.default_error_messages[:taken] 的等价物是什么?我已经发现 ActiveModel 处理错误而不是 ActiveRecord,但我自己找不到错误。

【问题讨论】:

  • 虽然这可能无法完全回答您的问题,但它为您提供了一种自定义验证错误消息的方法(假设您正在尝试这样做):stackoverflow.com/questions/808547/…
  • 实际上,我并不是在尝试自定义它们,而只是在测试中使用它们,以确保引发正确的错误消息。但是,您提供的链接很有用 - 与早期版本相比,创建自定义消息似乎更复杂且更不直观!

标签: ruby-on-rails validation ruby-on-rails-3 activemodel


【解决方案1】:

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

更新:

也许您应该尝试添加自己的自定义错误消息?

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

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

【讨论】:

  • 谢谢,这是另一个有用的信息。但是如何访问 Rails 程序中的信息呢?在 ActiveModel::Errors 或其他地方一定有一个方法,不是吗?
  • 你到底想做什么?
  • 例如,assert_equal(object.errors[field], ActiveRecord::Error.default_error_messages[:taken]) 来测试是否给出了正确的错误信息。这对我来说实际上并不那么重要,我可以只使用文本文字,但这似乎不是“纯粹”的做事方式。
猜你喜欢
  • 2021-12-30
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 2020-08-15
  • 2012-10-30
  • 2018-12-02
相关资源
最近更新 更多