aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorDmitry Vorotilin <d.vorotilin@gmail.com>2013-03-01 02:32:38 +0400
committerDmitry Vorotilin <d.vorotilin@gmail.com>2013-03-06 11:46:07 +0400
commitb04051d4e0c8066ec79cd4978606e4728dfa6ffa (patch)
treef5e3078bf8bfc31de0e65541489b3294642ab772 /activerecord/lib
parentee169329a898d993f0d024af6cce83649fb2f733 (diff)
downloadrails-b04051d4e0c8066ec79cd4978606e4728dfa6ffa.tar.gz
rails-b04051d4e0c8066ec79cd4978606e4728dfa6ffa.tar.bz2
rails-b04051d4e0c8066ec79cd4978606e4728dfa6ffa.zip
Fix ActiveRecord `subclass_from_attrs` when eager_load is false.
It cannot find subclass because all classes are loaded automatically when it needs.
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/inheritance.rb5
1 files changed, 3 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/inheritance.rb b/activerecord/lib/active_record/inheritance.rb
index e630897a4b..e4586f74fc 100644
--- a/activerecord/lib/active_record/inheritance.rb
+++ b/activerecord/lib/active_record/inheritance.rb
@@ -167,8 +167,9 @@ module ActiveRecord
# this will ignore the inheritance column and return nil
def subclass_from_attrs(attrs)
subclass_name = attrs.with_indifferent_access[inheritance_column]
- return nil if subclass_name.blank? || subclass_name == self.name
- unless subclass = subclasses.detect { |sub| sub.name == subclass_name }
+ return if subclass_name.blank? || subclass_name == self.name
+ subclass = subclass_name.safe_constantize
+ unless subclasses.include?(subclass)
raise ActiveRecord::SubclassNotFound.new("Invalid single-table inheritance type: #{subclass_name} is not a subclass of #{name}")
end
subclass