aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/observer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/observer.rb')
-rw-r--r--activerecord/lib/active_record/observer.rb10
1 files changed, 7 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/observer.rb b/activerecord/lib/active_record/observer.rb
index ace52ef415..29edabc9b1 100644
--- a/activerecord/lib/active_record/observer.rb
+++ b/activerecord/lib/active_record/observer.rb
@@ -140,7 +140,11 @@ module ActiveRecord
# The class observed by default is inferred from the observer's class name:
# assert_equal [Person], PersonObserver.observed_class
def observed_class
- name.scan(/(.*)Observer/)[0][0].constantize
+ if observed_class_name = name.scan(/(.*)Observer/)[0]
+ observed_class_name[0].constantize
+ else
+ nil
+ end
end
end
@@ -163,11 +167,11 @@ module ActiveRecord
protected
def observed_classes
- Set.new([self.class.observed_class].flatten)
+ Set.new([self.class.observed_class].compact.flatten)
end
def observed_subclasses
- observed_classes.sum(&:subclasses)
+ observed_classes.collect(&:subclasses).flatten
end
def add_observer!(klass)