diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2016-08-14 14:39:04 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2016-08-14 14:39:04 -0700 |
commit | b6c0bc9c8a6a6dc86b315566e3ab52acc1a5377d (patch) | |
tree | d2ae67e674ae56595b819c5a526374865524274a | |
parent | fb99a48b063c337317aaf20fe50a02519f553265 (diff) | |
download | rails-b6c0bc9c8a6a6dc86b315566e3ab52acc1a5377d.tar.gz rails-b6c0bc9c8a6a6dc86b315566e3ab52acc1a5377d.tar.bz2 rails-b6c0bc9c8a6a6dc86b315566e3ab52acc1a5377d.zip |
Pass along original attribute to save later recursion
Fixes #26122
-rw-r--r-- | activerecord/lib/active_record/attribute.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/base_test.rb | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/attribute.rb b/activerecord/lib/active_record/attribute.rb index 95b3adae5f..380593e809 100644 --- a/activerecord/lib/active_record/attribute.rb +++ b/activerecord/lib/active_record/attribute.rb @@ -65,7 +65,7 @@ module ActiveRecord def with_value_from_user(value) type.assert_valid_value(value) - self.class.from_user(name, value, type, self) + self.class.from_user(name, value, type, original_attribute || self) end def with_value_from_database(value) diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index cd896e5948..bf2c13cfac 100644 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -115,6 +115,13 @@ class BasicsTest < ActiveRecord::TestCase end end + def test_many_mutations + car = Car.new name: "<3<3<3" + car.engines_count = 0 + 20_000.times { car.engines_count += 1 } + assert car.save + end + def test_limit_without_comma assert_equal 1, Topic.limit("1").to_a.length assert_equal 1, Topic.limit(1).to_a.length |