プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby on Rails
  • 【Ruby on Rails】バリデーション処理、メッセージの日本語化
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】バリデーション処理、メッセージの日本語化

11.26

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

validatesメソッド

下記の構文を使うことでモデルのカラムに対して検証ルールを設定できます。

1
validates カラム名,検証ルール

app/models/モデル名.rb

validatesメソッドを実行する際に記述するソースファイルになります。デフォルトでは下記のように何もクラス内に何も処理が記述されていません。

1
2
class User < ApplicationRecord
end

下記のように編集します。

1
2
3
class User < ApplicationRecord
  validates :username,presence: true
end

そうすると下記のように未入力になっている場合はバリデーションエラーが出るようになります。

Railsでデフォルトで用意されている検証ルール

presence

未入力を許可しない。(allow_blankの逆)

allow_blank

未入力を許可する。(presenceの逆)

numericality

数値のみ許可する。

only_integer

1
numericality:{only_integer:true}

少数を許可しない。numericalityのオプションとして指定します。

format:{with:正規表現}

正規表現を指定します。

inclusion

数値の範囲や、文字列のフォーマットや構成文字種が想定どおりか。

uniqueness

既に同一のデータが登録されていないかチェックします。

case_sensitive

大文字と小文字の区別をします。

length

長さ制限をする。

maximum

長さの上限

minimum

長さの下限

in: 最小長..最大長

長さの範囲

is: 長さ固定指定

長さの指定

confirmation

パスワードやメアドが確認用の入力内容と一致しているかチェックする。

どこにエラーが格納されるか。

ActiveModel::Errorsオブジェクトのerrosにエラーコード等が格納されることになります。モデルオブジェクト.errosでアクセスすることが可能です。

独自の検証ルール

下記のようにプライベートメソッドとして記述すれば独自の検証ルールを作成することが可能です。

1
2
3
4
5
6
7
8
class User < ApplicationRecord
  validate :検証メソッド名
 
  private
    def 検証メソッド名
      独自の検証処理
    end
end

独自の検証ルールを作り際は「validatesメソッド」ではなく「validateメソッド」になるので注意です。

errors.addメソッド

検証でエラーになる場合は下記の構文でエラーを画面に出力します。

1
errors.add(カラム名,'メッセージ')

日本語化

Railsのアプリケーションではエラーメッセージはデフォルトで英語になっています。英語以外の言語を使いたい場合は下記の手順を実施する必要があります。(手順は日本語に翻訳する手順になります。)

Gemfileに下記のGemを追加します。

1
gem 'rails-i18n'

Railsサーバーを再起動すればバリデーションメッセージをある程度日本語化することができます。

ただ、個別のプロパティ名は日本語化されないのでconfig/locales/ja.ymlにて日本語名を指定する必要があります。

1
2
3
4
5
6
ja:
  activerecord:
    attributes:
      モデル名:
        name: 日本語名1
        age: 日本語名2フ

rails-i18nリポジトリから翻訳ファイルを取得する。

下記コマンドを実行して(アプリ名)/config/localesに日本語翻訳ファイルをダウンロードします。

1
wget https://raw.github.com/svenfuchs/rails-i18n/master/rails/locale/ja.yml -P config/locales/

自身で作成することも可能ですが、上記のようにGitHubのrails-i18nリポジトリに既に翻訳されたファイルがあるのでそれを利用するが早いです。

「(アプリ名)/config/initializers/locale.rb」というファイルを新たに作成して下記の記述を記述します。

1
Rails.application.config.i18n.default_locale = :ja

この設定をすればデフォルトで日本語のコンテンツを使うように設定が可能です。

もしくは、「(アプリ名)/config/application.rb」に以下の記述を追加するのもありです。

1
config.i18n.default_locale = :ja

スポンサーリンク
  • 2019 11.26
  • miyabisan2
  • コメントを書く
  • Ruby on Rails
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 11.25

    【Ruby on Rails】フォーム関連のビューヘルパー(form_with等)

  2. 2019 12.08

    【Ruby on Rails】「seedデータ」、「faker」

  3. 2018 06.19

    【Ruby on Rails】の「O/Rマッパー」である「ActiveRecord(アクティブレコード)」、Scaffoldingで雛形アプリ作成まで

  4. 2020 03.15

    【Ruby on Rails】「フィクスチャ」について

  5. 2019 11.27

    【Ruby on Rails】テンプレートエンジンの種類(ERB,Haml,Slim)

  6. 2020 11.29

    【Ruby on Rails】「ActiveModel」、「フォームオブジェクト」、「EachValidator」、「単一テーブル継承(STI)」

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Ruby on Rails】フォーム関連のビューヘル…

【Ruby on Rails】テンプレートエンジンの種…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー