ActiveRecord::RecordInvalid を手動で raise するには引数として model オブジェクトが必要。 下記のように、validationに失敗したオブジェクトを取得できる begin complex_operation_that_calls_save!_internally rescue ActiveRecord::RecordInvalid => invalid puts invalid.record.errors end ActiveRecord::RecordNotSaved は ActiveRecord::RecordInvalid との違いがいまいち分からない。 ActiveRecord::RecordNotSaved の方は model オブジェクトが必要ない A Programmer's Journal: ActiveRecord::Record