Railsのトランザクションと例外処理がよく分からなかったので、調べました。
app/controllers/user_controller.rb
def create
ActiveRecode::Base.transaction do
# createではなく、create!にすると保存できなかったときに例外が発生します。
@user = User.create!(user_params)
rescue => e
# バリデーションエラーだけ拾いたい場合は次の行
# (ActiveRecord:RecodeInvalid => e)
# error処理
end
end
rescueはphpでいうとexceptionみたいな感じでした。
参考サイト
rails save! create! update!のバリデーション例外を捕捉する - Qiita