地方でリモートワーク in Iwate

東京の受託開発会社でリモートワークしてます。

restrict_with_exceptionを日本語化する方法

スポンサーリンク

けっきょくうまくいかず、restrict_with_errorの方を使いました。

途中まではできたんですが、子モデルを日本語化できなかったです。悔しい!

途中経過を残しておきます。

ActiveRecordの該当メソッドをオーバーライドすることでいけました。

config/initializers/monkey_paches/delete_restriction_error.rb

module ActiveRecord
  class DeleteRestrictionError
    def initialize(name = nil)
      if name
        super("#{name}が存在しているため削除できません")
      else
        super("Delete restriction error.")
      end
    end
  end
end

しかしこのnameの部分をいろいろymlファイルで日本語化しようと試みたのですが、だめでした。

8/31追記

super(I18n.t(name.to_s.singularize, scope: 'activerecord.models') + "が存在しているため削除できません")

このコードでテーブル名も日本語化することができます。教えていただいた方、ありがとうございました!

restrict_with_errorの日本語化はymlファイルに記述するだけでいけます。

  activerecord:
    errors:
      messages:
        restrict_dependent_destroy:
          many: "%{record}が存在しているので削除できません"
    attributes:
      user:
        users: ユーザー