I18n 中的字符串插值用于活动记录验证错误

sno*_*gel 5 rails-i18n

我有一个非用户友好的验证错误消息,我想覆盖它:

Cannot delete record because dependent [unfriendly model names] exist
Run Code Online (Sandbox Code Playgroud)

协会在哪里

has_many :unfriendly_model_names, dependent: :restrict_with_error
Run Code Online (Sandbox Code Playgroud)

我希望它是

Cannot delete record because dependent [nice readable model names] exist
Run Code Online (Sandbox Code Playgroud)

我希望我可以使用 I18n,但是我如何以及在什么时候将更友好的字符串传递给record插值?

en-GB:
  activerecord:
    errors:
      messages:
        restrict_dependent_destroy:
          has_many: "Cannot delete record because dependent %{record} exist"
Run Code Online (Sandbox Code Playgroud)

pan*_*teo 0

您必须本地化关联属性。因此,如果您试图销毁一个user有许多posts限制的错误:

en:
  activerecord:
    attributes:
      user:
        posts: "nice readable model names"
Run Code Online (Sandbox Code Playgroud)

原因在这里:https://github.com/rails/rails/blob/6-0-stable/activerecord/lib/active_record/associations/has_many_association.rb#L20