diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-09-30 16:02:49 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-09-30 16:03:05 -0700 |
commit | 0238228e5d3ce1747a6f1d618693ffd44f947561 (patch) | |
tree | 06188a3d15aa7db2288aad0aac06aee68d087e6b | |
parent | 15419a5dc692be997d7637e40435a3d0d0fa4c1c (diff) | |
download | rails-0238228e5d3ce1747a6f1d618693ffd44f947561.tar.gz rails-0238228e5d3ce1747a6f1d618693ffd44f947561.tar.bz2 rails-0238228e5d3ce1747a6f1d618693ffd44f947561.zip |
type_name should check for blank because people may have messed up databases
-rw-r--r-- | activerecord/lib/active_record/base.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/inheritance_test.rb | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index aed4eff565..9204295d8c 100644 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -890,7 +890,7 @@ module ActiveRecord #:nodoc: end def find_sti_class(type_name) - if type_name.nil? || !columns_hash.include?(inheritance_column) + if type_name.blank? || !columns_hash.include?(inheritance_column) self else begin diff --git a/activerecord/test/cases/inheritance_test.rb b/activerecord/test/cases/inheritance_test.rb index 8c09fc4d59..31679b2efe 100644 --- a/activerecord/test/cases/inheritance_test.rb +++ b/activerecord/test/cases/inheritance_test.rb @@ -14,6 +14,20 @@ class InheritanceTest < ActiveRecord::TestCase ActiveRecord::Base.store_full_sti_class = old end + def test_class_with_blank_sti_name + company = Company.find(:first) + company = company.clone + company.extend(Module.new { + def read_attribute(name) + return ' ' if name == 'type' + super + end + }) + company.save! + company = Company.find(:all).find { |x| x.id == company.id } + assert_equal ' ', company.type + end + def test_class_without_store_full_sti_class_returns_demodulized_name old = ActiveRecord::Base.store_full_sti_class ActiveRecord::Base.store_full_sti_class = false |