Callbacks fire before notifying observers [#230 state:resolved]

Signed-off-by: Joshua Peek <josh@joshpeek.com>
This commit is contained in:
Craig Demyanovich 2008-06-03 13:38:00 -05:00 committed by Joshua Peek
parent a977f3e88e
commit aa17716688
2 changed files with 40 additions and 2 deletions

View File

@ -293,14 +293,14 @@ module ActiveRecord
private
def callback(method)
notify(method)
result = run_callbacks(method) { |result, object| result == false }
if result != false && respond_to_without_attributes?(method)
result = send(method)
end
notify(method)
return result
end

View File

@ -0,0 +1,38 @@
require "cases/helper"
class Comment < ActiveRecord::Base
attr_accessor :callers
before_validation :record_callers
def after_validation
record_callers
end
def record_callers
callers << self.class if callers
end
end
class CommentObserver < ActiveRecord::Observer
attr_accessor :callers
def after_validation(model)
callers << self.class if callers
end
end
class CallbacksObserversTest < ActiveRecord::TestCase
def test_model_callbacks_fire_before_observers_are_notified
callers = []
comment = Comment.new
comment.callers = callers
CommentObserver.instance.callers = callers
comment.valid?
assert_equal [Comment, Comment, CommentObserver], callers, "model callbacks did not fire before observers were notified"
end
end