#はじめに
例えばresult.save
のように変数result
の保存をしようとした時に、失敗するとresultにエラーメッセージが格納される。
これを利用してエラーメッセージを表示させたいがRubyのエラー画面となる。
言い換えると思い通りのエラーメッセージが出ない。
エラー時にコンソールで確認の以下のようになる
result.errors.any? => False
保存できてないのにエラー出てないことになってる。
今回は無入力で登録しようとするとエラーを出したい。
#原因
Model
にバリデーション記述が無かったことが原因。
テーブル作成時にはカラムに制限(無入力制限のため null: false
とした)がそれだけではエラーメッセージがでない。
#対策
Model
に以下のような記述をした。
class Result < ApplicationRecord
belongs_to ...
has_many ...
validates :name, presence: true
...
end
validates :name, presence: true
と記述することで
result.errors.any? => True
となり
result.errors.full_messages
で、エラーメッセージ全件の内容を取得しeach
を用いて取り出せました!