[Rails]Formオブジェクト使用時にエラーメッセージが日本語化されない[locale]


概要

オリジナルアプリ制作時、formオブジェクトを利用した箇所のエラーメッセージだけ日本語化されなかったのでその備忘録を。

https://qiita.com/rytr823/items/e9fbbb16884b6f52d463
調べていたら上記の方とほとんど同じでした。感謝。

前提

ja.ymlファイルの作成までは終わっている

環境

ruby 2.6.5
rails 6.0.0
gem 'rails-i18n'導入済み

formオブジェクトの配置場所

app/forms/guest_data.rb

EZ図

この図のguestsテーブルとbathsテーブルとdrinksテーブルの3つをformオブジェクトを使用して保存しようとしていた。

内容

ja.ymlに記述しても日本語化が適用されない

間違ってた記述

config/locales/ja.yml
ja:
  activerecord:
    attributes:
      guest:
       first_name: 苗字(全角)
       last_name: 名前(全角)
       first_name_kana: 苗字(カタカナ)
       last_name_kana: 名前(カタカナ)
       gender_id: 性別
       visit1_id: 1回目の利用日
       visit2_id: 2回目の利用日
       description: 利用者の詳細
      bath:
       bathing_id: 入浴の種類
       infection_id: 対応が必要な感染症
       timing_id: 入浴の順番
       remark_bath: 入浴の備考
      drink:
       drink_type_id: 飲み物の種類
       thickness_id: とろみの量
       warm: 温めるか
       diabetes: 糖尿病

正しい記述

config/locales/ja.yml
ja:
  activemodel:
    attributes:
      guest_data:
        first_name: 苗字(全角)
        last_name: 名前(全角)
        first_name_kana: 苗字(カタカナ)
        last_name_kana: 名前(カタカナ)
        gender_id: 性別
        visit1_id: 1回目の利用日
        visit2_id: 2回目の利用日
        description: 利用者の詳細
        bathing_id: 入浴の種類
        infection_id: 対応が必要な感染症の有無
        timing_id: 入浴の順番
        remark_bath: 入浴の備考
        drink_type_id: 飲み物の種類
        thickness_id: とろみの量
        warm: 温めるか
        diabetes: 糖尿病

原因

記述をしたapp/forms/guest_data.rbはactiverecordではなくactivemodelを継承していたため。

参考記事

https://qiita.com/rytr823/items/e9fbbb16884b6f52d463
https://qiita.com/jacoyutorius/items/e0d2cfdb61ff4c4fd1e7
https://qiita.com/astap/items/c07e0b08273fd97aaa91