#はじめに
このような形でエラーメッセージを日本語化しました。
しかし、職業の所はActiveHashをしており、エラーメッセージが「1以外の値にして下さい」と、ユーザーからは何を言ってるか分からない日本語になっています。
ここをどうやって直したかをアウトプットしたいと思います。
###前提
-
gem 'rails-i18n'
がインストールされている状況 -
config>locals>devise.ja.ymlに日本語メッセージを記述してある状況
#試した事
ActiveHashし、id:1は選択できないようにバリデーションをかけています。
app>models>profession.rb
class Profession < ActiveHash::Base
self.data = [
{ id: 1, name: '--' },
{ id: 2, name: '小学校教諭' },
{ id: 3, name: '中学校教諭' },
{ id: 4, name: '高校教諭' },
{ id: 5, name: '特別支援学校教諭' },
]
include ActiveHash::Associations
has_many :users
end
user.rb
class User < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to :profession
with_options presence: true do
#他バリデーション省略
validates :profession_id, numericality: { other_than: 1}
end
end
**numericality: { other_than: 1}
**このバリデーションを記述しました。
試した事はdevise.ja.yml
内に記述しました。
devise.ja.yml
other_than: 'を選択して下さい'
表示は変わらずでした。
他にもja.yml
に同じように記述しましたが結果はできず。。。
#結論
調べた所、直接モデルに記述できる事を知りました。
user.rb
validates :profession_id, numericality: { other_than: 1, message: 'を選択して下さい'}
このように選ばなかったら日本語でエラーメッセージを出す事ができました。
#参考