提交 fbef982e 编写于 作者: S Stefan Kaes 提交者: Jeremy Kemper

Observers not longer add an after_find method to the observed class.

[#625 state:resolved]
上级 c7acfbb2
......@@ -20,7 +20,7 @@ module ClassMethods
# ActiveRecord::Base.observers = Cacher, GarbageCollector
#
# Note: Setting this does not instantiate the observers yet. +instantiate_observers+ is
# called during startup, and before each development request.
# called during startup, and before each development request.
def observers=(*observers)
@observers = observers.flatten
end
......@@ -130,11 +130,11 @@ def inherited(subclass)
# Observers register themselves in the model class they observe, since it is the class that
# notifies them of events when they occur. As a side-effect, when an observer is loaded its
# corresponding model class is loaded.
#
#
# Up to (and including) Rails 2.0.2 observers were instantiated between plugins and
# application initializers. Now observers are loaded after application initializers,
# application initializers. Now observers are loaded after application initializers,
# so observed models can make use of extensions.
#
#
# If by any chance you are using observed models in the initialization you can still
# load their observers by calling <tt>ModelObserver.instance</tt> before. Observers are
# singletons and that call instantiates and registers them.
......@@ -189,7 +189,6 @@ def observed_subclasses
def add_observer!(klass)
klass.add_observer(self)
klass.class_eval 'def after_find() end' unless klass.method_defined?(:after_find)
end
end
end
......@@ -143,12 +143,20 @@ def test_observing_subclasses
assert_equal developer.name, multi_observer.record.name
end
def test_observing_after_find_when_not_defined_on_the_model
def test_after_find_cannot_be_observed_when_its_not_defined_on_the_model
observer = MinimalisticObserver.instance
assert_equal Minimalistic, MinimalisticObserver.observed_class
minimalistic = Minimalistic.find(1)
assert_equal minimalistic, observer.minimalistic
assert_nil observer.minimalistic
end
def test_after_find_can_be_observed_when_its_defined_on_the_model
observer = TopicObserver.instance
assert_equal Topic, TopicObserver.observed_class
topic = Topic.find(1)
assert_equal topic, observer.topic
end
def test_invalid_observer
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册