問題
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=>["年齢は数値で入力してください", "年齢を入力してください"]}