Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

Ruby

【Ruby on Rails】簡単なメモアプリの作成|バリデーションとエラーメッセージの実装

Ruby on Rails バリデーション

動画で解説を見る



開発環境

  • Ruby:version 3.1.2
  • Ruby on Rails:version 7.0.4
  • Visual Studio Code:version 1.73.0
  • OS:Windows10

Ruby on Railsでバリデーションの実装手順

Ruby on Railsのバリデーションは基本的にモデルに記載されることが多いです。

今回はメモアプリの作成で使用したコードを用いて解説していきます。

モデルにバリデーションを記載する

「validates」の後にカラム名を指定し、その後にバリデーションを設定していきます。

「presence: true」は空白を許可しないという意味になり、「length: { minimum: 2, maximum: 32 }」は属性の値の長さを2以上32以下にするという意味になります。

その他にも様々な制約を設定することができますので、詳しくはRuby on Rails ガイドを参考にすることをおすすめします。

Ruby on Rails ガイド:https://railsguides.jp/active_record_validations.html

ビューにエラーメッセージを記載する

バリデーションが行われた後でerrorsインスタンスメソッドを使うと、発生したエラーにアクセスできます。

「オブジェクト.errors.any?」とすることでエラーが発生していれば「true」、エラーが発生していなければ「false」となります。

また、「オブジェクト.errors.full_message」とすることで属性名の冒頭を大文字にした読みやすいメッセージを生成、それをeachメソッドで一つずつ取り出し表示するという流れになります。

コントローラーにエラーが出た場合の処理を記載する

バリデーションが行われた後にエラーが発生した場合、createアクション内で再びrenderメソッドでviewファイルを読み込む設定をします。

上記のようにすることにより、入力されたデータを残したままオブジェクトに格納されたエラー内容も渡すことができます。

CSSにバリデーションによるレイアウトが崩れるのを防ぐ記載する

「list-style-position」で箇条書きのリストを表示するタグの点をインラインに設定しておきます。

また、Ruby on Railsはバリデーションによりエラーが出た箇所に自動的に「field_with_errors」というクラスを持つdivタグが、labelタグやinputタグを囲む仕様になっています。

Railsガイド:https://railsguides.jp/active_record_validations.html#%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E3%83%93%E3%83%A5%E3%83%BC%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B

そのため、「display: contents;」で指定した要素のコンテンツ領域以外は描画されなくすれば解消できます。

おわりに

Ruby on Railsでバリデーションとエラーメッセージについて解説してきましたが、いかがだったでしょうか。

データベースに正しいデータを保存するためにバリデーションは必須とされているため、是非、様々な制限をかけられるように挑戦してみてください。

Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

-Ruby