解決したいこと
エラーメッセージを日本語化していたところ、日本語化されないカラムがある。
userとitemは問題なく日本語化ができた。
該当するソースコード
ja:
activerecord:
attributes:
user:
nickname: ニックネーム
last_name: お名前(名字)
first_name: お名前(名前)
last_name_kana: お名前カナ(名字)
first_name_kana: お名前カナ(名前)
birthday: 生年月日
item:
name: 商品名
image: 出品画像
introduction: 商品の説明
category_id: カテゴリー
status_id: 商品の状態
postage_id: 配送料の負担
prefecture_id: 発送元の地域
days_to_ship_id: 発送までの日数
price: 販売価格
user_destination: ⬅️ここを日本語化したい
post_code: 郵便番号
prefecture_id: 都道府県
city: 市区町村
address: 番地
phone_number: 電話番号
自分で試したこと
user_destinationをdestinationに変えてみたり・・・
destinationsに変えてみたり・・・
% bundle exec rspec spec/models/user_destination_spec.rb
..
20:
21: context '新規登録がうまくいかないとき' do
22: it '郵便番号が必須であること' do
23: @user_destination.post_code = ''
24: @user_destination.valid?
=> 25: binding.pry
26: expect(@user_destination.errors.full_messages).to include("Post code can't be blank")
27: end
28:
29: it '郵便番号にはハイフンが必須であること' do
30: @user_destination.post_code = '1234567'
[1] pry(#<RSpec::ExampleGroups::UserDestination::Nested::Nested_2>)> @user_destination.errors.full_messages
=> ["Post codeを入力してください", "Post codeは不正な値です"]
[2] pry(#<RSpec::ExampleGroups::UserDestination::Nested::Nested_2>)> exit
FFFFFFFFFFFF
何度やってもPost codeが郵便番号にならない。
こちらの記事に辿り着きしっかり読ませてもらいました。
https://qiita.com/okeicalm/items/9638250ddfb361d80a16
activerecord:
models:
user: ユーザー
という記述を眺めていたらふと気付く。
んん?activerecordってなんだっけ?
各モデルファイルを見てみるとuser_destinationモデルにはActiveModelと記述してある。
これはもしかして・・・
ja:
activerecord:
attributes:
user:
nickname: ニックネーム
last_name: お名前(名字)
first_name: お名前(名前)
last_name_kana: お名前カナ(名字)
first_name_kana: お名前カナ(名前)
birthday: 生年月日
item:
name: 商品名
image: 出品画像
introduction: 商品の説明
category_id: カテゴリー
status_id: 商品の状態
postage_id: 配送料の負担
prefecture_id: 発送元の地域
days_to_ship_id: 発送までの日数
price: 販売価格
activemodel: ⬅️階層を変更して記述した
attributes:
user_destination:
post_code: 郵便番号
prefecture_id: 都道府県
city: 市区町村
address: 番地
phone_number: 電話番号
% bundle exec rspec spec/models/user_destination_spec.rb
..
20:
21: context '新規登録がうまくいかないとき' do
22: it '郵便番号が必須であること' do
23: @user_destination.post_code = ''
24: @user_destination.valid?
=> 25: binding.pry
26: expect(@user_destination.errors.full_messages).to include("Post code can't be blank")
27: end
28:
29: it '郵便番号にはハイフンが必須であること' do
30: @user_destination.post_code = '1234567'
[1] pry(#<RSpec::ExampleGroups::UserDestination::Nested::Nested_2>)> @user_destination.errors.full_messages
=> ["郵便番号を入力してください", "郵便番号は不正な値です"]
日本語化されてる!
結果としてはActive RecordとActive Modelはそもそも種類が違うのでactiverecord:のくくりに入れてできるわけがない、ということでした。
今日も勉強になりました。