67731

[code]

    class LimitUser < ApplicationRecord
      belongs_to :limit_users_summary
      belongs_to :user, foreign_key: :user_id 
    
      validates :user, presence: { message: I18n.t('activemodel.errors.models.limit_user.invalid_user') }
      validates :user_id, uniqueness: {message: I18n.t('activemodel.errors.models.limit_user.duplicated') }
    end
    
[/code]

というバリーデーションを書いてわざとエラーが出るリクエストを行ったところ

[code]

    1 error prohibited this limit_users_summary from being saved:
    Limit users userが存在しません
    
[/code]

というエラーが出るのですが 'Limit users user' のところを日本語化するにはどうすればいいんでしょうか  
limit_user モデルの attribute user なので  
辞書ファイルはこんな感じにいろんなパターンをかいてみたんですが変換されません

[code]

    ja:
      activerecord:
        attributes:
          limit_users_summary:
            limit_users:
              user: ユーザ
              user_id: ユーザ
            limit_user:
              user: ユーザ
              user_id: ユーザ
          limit_user:
            user: ユーザ
            user_id: ユーザ
      activemodel:
        errors:
          models:
            limit_user:
              duplicated: が重複しています
              invalid_user: が存在しません
    
[/code]

`activemodel.errors.models.limit_user.invalid_user`  
の文言を変えると反映されるので i18n や辞書ファイル自体は動いてるようなのです

* * *

Rails の i18n の変換のパスでたびたび悩まされるんですが  
ブラックボックスなフレームワーク内部でどういう辞書のパスを使おうとしてるか表示する方法ってないでしょうか

i18n.t を読んだときは translation missing … 以下辞書のパスを表示してくれるのですぐにで原因がわかるんですが…


CC BY-SA 4.0
2020-06-16T08:55:28.473
67720
2020-06-16T14:35:23.463
2020-06-16T11:08:34.020
question
ruby-on-rails
Rails i18n 辞書のパスを調べる方法

[code]

    ja:
      activerecord:
        attributes:
          limit_users_summary/limit_user:
            user: ユーザ
            user_id: ユーザ
    
[/code]

こんな感じだと思います


CC BY-SA 4.0
2020-06-16T14:35:23.463
67731
2020-06-16T14:35:23.463
67720
answer