0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Rails]errorsメソッドでエラーメッセージが出せないときの対処

Posted at

#はじめに
例えば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を用いて取り出せました!

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?