Rails事务不会在验证错误时回滚

Sha*_*moe 11 transactions ruby-on-rails

我有两个模型:用户和公司.它们都是从一个表单创建的,我正在使用这样的事务:

 User.transaction do

  @user.save!

  @company.user = @user
  @company.save!

  @user.reload
  @user.company = @company
  @user.save!

 flash[:notice] = "Thank you for your registration."
  redirect_to_index
end
Run Code Online (Sandbox Code Playgroud)

即使公司的某个验证失败,用户也会保存到数据库中.我已经尝试添加ActiveRecord :: RecordInvalid的显式错误处理,但它没有帮助.我认为验证会引发错误以回滚事务.任何帮助是极大的赞赏.

谢谢

T.R*_*dra -3

http://tempe.st/2007/05/transaction-in-rails/

我相信您必须在事务循环之外使用开始结束块。