diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2015-09-24 09:08:43 -0600 |
---|---|---|
committer | Sean Griffin <sean@seantheprogrammer.com> | 2015-09-24 09:08:43 -0600 |
commit | 8587cf0d930832c362249ccec5fe896bd6563e2b (patch) | |
tree | 298ca6c3f0a593cb55f9fe90c4f69b7647d43e94 /activerecord/test | |
parent | 4a375a83deab7a3089e718a1d18ddc4c2846cd40 (diff) | |
parent | 4ccdd4122dfdab200c02f78a994f4112d6164164 (diff) | |
download | rails-8587cf0d930832c362249ccec5fe896bd6563e2b.tar.gz rails-8587cf0d930832c362249ccec5fe896bd6563e2b.tar.bz2 rails-8587cf0d930832c362249ccec5fe896bd6563e2b.zip |
Merge pull request #21720 from byroot/ignore-columns
Implement ActiveRecord::Base.ignored_columns
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/base_test.rb | 18 | ||||
-rw-r--r-- | activerecord/test/models/developer.rb | 5 | ||||
-rw-r--r-- | activerecord/test/schema/schema.rb | 1 |
3 files changed, 24 insertions, 0 deletions
diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index 991145bed4..d6c48b99f3 100644 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -1571,4 +1571,22 @@ class BasicsTest < ActiveRecord::TestCase assert_not topic.id_changed? end + + test "ignored columns are not present in columns_hash" do + cache_columns = Developer.connection.schema_cache.columns_hash(Developer.table_name) + assert_includes cache_columns.keys, 'first_name' + refute_includes Developer.columns_hash.keys, 'first_name' + end + + test "ignored columns have no attirbute methods" do + refute Developer.new.respond_to?(:first_name) + refute Developer.new.respond_to?(:first_name=) + refute Developer.new.respond_to?(:first_name?) + end + + test "ignored columns don't prevent explicit declaration of attribute methods" do + assert Developer.new.respond_to?(:last_name) + assert Developer.new.respond_to?(:last_name=) + assert Developer.new.respond_to?(:last_name?) + end end diff --git a/activerecord/test/models/developer.rb b/activerecord/test/models/developer.rb index 8ac7a9df6a..7565e8f967 100644 --- a/activerecord/test/models/developer.rb +++ b/activerecord/test/models/developer.rb @@ -7,6 +7,8 @@ module DeveloperProjectsAssociationExtension2 end class Developer < ActiveRecord::Base + self.ignored_columns = %w(first_name last_name) + has_and_belongs_to_many :projects do def find_most_recent order("id DESC").first @@ -61,6 +63,9 @@ class Developer < ActiveRecord::Base developer.audit_logs.build :message => "Computer created" end + attr_accessor :last_name + define_attribute_method 'last_name' + def log=(message) audit_logs.build :message => message end diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb index 4c6d1ef3ce..4b7272f10a 100644 --- a/activerecord/test/schema/schema.rb +++ b/activerecord/test/schema/schema.rb @@ -250,6 +250,7 @@ ActiveRecord::Schema.define do create_table :developers, force: true do |t| t.string :name + t.string :first_name t.integer :salary, default: 70000 if subsecond_precision_supported? t.datetime :created_at, precision: 6 |