aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2015-09-25 07:52:37 -0600
committerSean Griffin <sean@seantheprogrammer.com>2015-09-25 07:54:38 -0600
commit37661bfc810da7384ac6650d60be8669baa16813 (patch)
treedb005f8a472a46f19ef5be12e61fe98323f1d69b /activerecord/test/cases
parent73eec7ac4008c178b6cacf71a20457fcfbe7c515 (diff)
downloadrails-37661bfc810da7384ac6650d60be8669baa16813.tar.gz
rails-37661bfc810da7384ac6650d60be8669baa16813.tar.bz2
rails-37661bfc810da7384ac6650d60be8669baa16813.zip
`validates_acceptance_of` shouldn't require a database connection
The implementation of `attribute_method?` on Active Record requires establishing a database connection and querying the schema. As a general rule, we don't want to require database connections for any class macro, as the class should be able to be loaded without a database (e.g. for things like compiling assets). Instead of eagerly defining these methods, we do it lazily the first time they are accessed via `method_missing`. This should not cause any performance hits, as it will only hit `method_missing` once for the entire class.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/validations_test.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/activerecord/test/cases/validations_test.rb b/activerecord/test/cases/validations_test.rb
index a429d06aad..d04f4f7ce7 100644
--- a/activerecord/test/cases/validations_test.rb
+++ b/activerecord/test/cases/validations_test.rb
@@ -168,4 +168,15 @@ class ValidationsTest < ActiveRecord::TestCase
ensure
Topic.reset_column_information
end
+
+ def test_acceptance_validator_doesnt_require_db_connection
+ klass = Class.new(ActiveRecord::Base) do
+ self.table_name = 'posts'
+ end
+ klass.reset_column_information
+
+ assert_no_queries do
+ klass.validates_acceptance_of(:foo)
+ end
+ end
end