Rails 3.2の場合、これが必要かどうかはよくわかりません:
irb(main):008:0> user = User.create()
それからエラーが発生します:
irb(main):009:0> user.errors
=> #<ActiveModel::Errors:0xaa84c60 @base=#<User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil, first_name: nil, last_name: nil, role: "user", approved: false>, @messages={:email=>["can't be blank"], :password=>["can't be blank"]}>
それらは応答の最後にあります。
また、ユーザーを変数に保存せずに、作成アクションでエラーを呼び出すこともできます。
irb(main):010:0> User.create().errors
(0.3ms) BEGIN
(0.1ms) ROLLBACK
=> #<ActiveModel::Errors:0xa390d78 @base=#<User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil, first_name: nil, last_name: nil, role: "user", approved: false>, @messages={:email=>["can't be blank"], :password=>["can't be blank"]}>
最後に、エラーのある同じハッシュを取得します。
@messages={:email=>["can't be blank"], :password=>["can't be blank"]}