aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2018-09-20 11:58:20 -0600
committerGitHub <noreply@github.com>2018-09-20 11:58:20 -0600
commit8a908451b614d03db60da05c1525cfaf523189fa (patch)
tree561664a76a98440f94c31e76ad2476219c2ecc47 /activerecord/test/cases
parent0a829f7db10263c5bf5f8b4ee04ea92a05ecdd39 (diff)
parenta0482d39110860272a056593e0e5c6e2ef4d75b8 (diff)
downloadrails-8a908451b614d03db60da05c1525cfaf523189fa.tar.gz
rails-8a908451b614d03db60da05c1525cfaf523189fa.tar.bz2
rails-8a908451b614d03db60da05c1525cfaf523189fa.zip
Merge pull request #33925 from rafaelfranca/rm-fix-column_defaults
Make a deep copy of the _default_attributes in column_defaults
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/attributes_test.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/activerecord/test/cases/attributes_test.rb b/activerecord/test/cases/attributes_test.rb
index 3bc56694be..2632aec7ab 100644
--- a/activerecord/test/cases/attributes_test.rb
+++ b/activerecord/test/cases/attributes_test.rb
@@ -148,6 +148,20 @@ module ActiveRecord
assert_equal 2, klass.new.counter
end
+ test "procs for default values are evaluated even after column_defaults is called" do
+ klass = Class.new(OverloadedType) do
+ @@counter = 0
+ attribute :counter, :integer, default: -> { @@counter += 1 }
+ end
+
+ assert_equal 1, klass.new.counter
+
+ # column_defaults will increment the counter since the proc is called
+ klass.column_defaults
+
+ assert_equal 3, klass.new.counter
+ end
+
test "procs are memoized before type casting" do
klass = Class.new(OverloadedType) do
@@counter = 0