ActiveModelのvalid?はモデルのバリデーションを実行して真偽値を返却するメソッドですが、バリデーションエラー時に例外を発生させたいことがあったので調べてみました。
通常ならsave!やcreate!で対応できますが、Activerecord-importのBulkインサートの永続化前にバリデーションチェックしたい場合などは使えるかもしれません。
実装
unless product.valid? raise ActiveRecord::RecordInvalid, product end
valid?
が真の場合は、対象オブジェクトをActiveRecord::RecordInvalidの例外クラスに詰めてあげれば永続化することなく例外を発生することが可能です。