aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/models
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2018-06-05 00:27:43 +0900
committerRyuta Kamizono <kamipo@gmail.com>2018-06-07 06:58:45 +0900
commit5dc72378b783e924c5bf079ca660388ec4ac9224 (patch)
tree5411c32f4330fca8ea97c56b810ea77cd079983a /activerecord/test/models
parent48c95cf7e591ed3b683705ded92c6d7c7518aaec (diff)
downloadrails-5dc72378b783e924c5bf079ca660388ec4ac9224.tar.gz
rails-5dc72378b783e924c5bf079ca660388ec4ac9224.tar.bz2
rails-5dc72378b783e924c5bf079ca660388ec4ac9224.zip
Fix `collection.create` to could be rolled back by `after_save`
In `_create_record`, explicit `transaction` block requires rollback handling manually when `insert_record` is failed. We need to handle it in `_create_record`, not in `insert_record`, since our test cases expect a record added to target and returned even if `insert_record` is failed, Closes #31488.
Diffstat (limited to 'activerecord/test/models')
-rw-r--r--activerecord/test/models/company.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/activerecord/test/models/company.rb b/activerecord/test/models/company.rb
index 6219f57fa1..d4d5275b78 100644
--- a/activerecord/test/models/company.rb
+++ b/activerecord/test/models/company.rb
@@ -150,6 +150,16 @@ class Client < Company
throw :abort if throw_on_save
end
+ attr_accessor :rollback_on_save
+ after_save do
+ raise ActiveRecord::Rollback if rollback_on_save
+ end
+
+ attr_accessor :rollback_on_create_called
+ after_rollback(on: :create) do |client|
+ client.rollback_on_create_called = true
+ end
+
class RaisedOnDestroy < RuntimeError; end
attr_accessor :raise_on_destroy
before_destroy do