Test `ignored_columns` value is inheritable by subclasses

This commit is contained in:
Ryuta Kamizono 2017-10-19 21:07:56 +09:00
parent a69f423e8b
commit 207c37a1ec
2 changed files with 10 additions and 0 deletions

View File

@ -1444,17 +1444,24 @@ class BasicsTest < ActiveRecord::TestCase
cache_columns = Developer.connection.schema_cache.columns_hash(Developer.table_name) cache_columns = Developer.connection.schema_cache.columns_hash(Developer.table_name)
assert_includes cache_columns.keys, "first_name" assert_includes cache_columns.keys, "first_name"
assert_not_includes Developer.columns_hash.keys, "first_name" assert_not_includes Developer.columns_hash.keys, "first_name"
assert_not_includes SubDeveloper.columns_hash.keys, "first_name"
end end
test "ignored columns have no attribute methods" do test "ignored columns have no attribute methods" do
refute Developer.new.respond_to?(:first_name) refute Developer.new.respond_to?(:first_name)
refute Developer.new.respond_to?(:first_name=) refute Developer.new.respond_to?(:first_name=)
refute Developer.new.respond_to?(:first_name?) refute Developer.new.respond_to?(:first_name?)
refute SubDeveloper.new.respond_to?(:first_name)
refute SubDeveloper.new.respond_to?(:first_name=)
refute SubDeveloper.new.respond_to?(:first_name?)
end end
test "ignored columns don't prevent explicit declaration of attribute methods" do 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=) assert Developer.new.respond_to?(:last_name=)
assert Developer.new.respond_to?(:last_name?) assert Developer.new.respond_to?(:last_name?)
assert SubDeveloper.new.respond_to?(:last_name)
assert SubDeveloper.new.respond_to?(:last_name=)
assert SubDeveloper.new.respond_to?(:last_name?)
end end
end end

View File

@ -87,6 +87,9 @@ class Developer < ActiveRecord::Base
private :track_instance_count private :track_instance_count
end end
class SubDeveloper < Developer
end
class AuditLog < ActiveRecord::Base class AuditLog < ActiveRecord::Base
belongs_to :developer, validate: true belongs_to :developer, validate: true
belongs_to :unvalidated_developer, class_name: "Developer" belongs_to :unvalidated_developer, class_name: "Developer"