Я бы сделал что-то вроде этого:
class ClarificationRequest < ActiveRecord::Base
include AASM
aasm_initial_state :open
# States
aasm_state :open
aasm_state :closed, :enter => :do_close
# Events
aasm_event :close do transitions :to => :closed, :from => [:open,:replied], :guard => :can_close? end
def recently_closed?
@recently_closed
end
protected
def do_close
@recently_closed = true
end
end
class ClarificationRequestObserver < ActiveRecord::Observer
observe :clarification_request
def after_save(clarification_request)
puts '############### message from observer!!!!!' if clarification_request.recently_closed?
end
end
Вы также должны включить наблюдателя в список config.active_record.observers
в config / environment.rb
Причина в том, что наблюдатель должен наблюдать за объектом. Активно уведомляя (и взаимодействуя) с наблюдателем из модели, вы предполагаете, что есть одна доступная, что я не верю, что вы можете безопасно это сделать (видя, как обычно ведут себя наблюдатели в реальном мире). Это должен решать наблюдатель, заинтересован ли он в событии или нет.