けっきょくうまくいかず、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: ユーザー
コメントを残す