LoginSignup
0
0

More than 1 year has passed since last update.

{other_than: 1} のエラーメッセージを日本語にする

Posted at

はじめに

スクリーンショット 2021-06-18 12.45.08(2).png

このような形でエラーメッセージを日本語化しました。

しかし、職業の所は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: 'を選択して下さい'}

スクリーンショット 2021-06-18 15.42.00(2).png

このように選ばなかったら日本語でエラーメッセージを出す事ができました。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0