LoginSignup
0
1

More than 5 years have passed since last update.

Ruby on Rails の ActiveRecord でバリデーションエラー取得時に、翻訳済みのフルのエラーメッセージとアトリビュート名を同時に取得する

Posted at

問題

Ruby on Rails では、モデルにバリデーションエラーを設定していた場合、 #errors でエラーの内容を取得出来ます。

full_messages では、アトリビュート名を含んだフルのメッセージを取得出来ますが、アトリビュート名は取得出来ません。

> person = Person.create
> person.errors.full_messages
=> ["年齢は数値で入力してください", "年齢を入力してください"]

messages ではアトリビュートとエラーの対が取得出来ますが、フルのメッセージは取得出来ません。

> person.errors.messages
=> {:age=>["は数値で入力してください", "を入力してください"]}

解決

to_hash に引数を与えることで、双方を取得出来ます。

> person.errors.to_hash(true)
=> {:age=>["年齢は数値で入力してください", "年齢を入力してください"]}

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