結論
以下の2つのどちらかの方法を使いましょう*1。
方法1. #new してから valid? で検証し、#errors でログを出す
#create
をいきなり使うと、エラーがなかった場合には実際にレコードが作られてしまうので、通常はこちらを使うといいと思います。
以下、users
というテーブルにレコードを作成する場合を例にします。作成の際に email: 'foobar@example.com'
というように email
カラムに値を指定します。しかし、「password
と password_confirmation
にも値が必要である」という理由でレコードが正しく作成されない状況を想定しています。
また、以下は pry
上での操作です。
> user = User.new(email: 'foobar@example.com') (省略) > user.valid? => false > user.errors (省略) @messages= {:password=>["can't be blank"], :password_confirmation=>["can't be blank"]}>
方法2. #create してから logger でログを出す
いざ #create
したら ROLLBACK
された場合、以下の方法でもよいでしょう*2。
> user = User.create(email: 'foobar@example.com') (省略) (0.1ms) rollback transaction > Rails.logger.debug(user.errors) (省略)@messages={:password=>["can't be blank"], :password_confirmation=>["can't be blank"]}, (後略)