Sha256: a715007a1e0ee89d9a5086414cebded9852c8114754d7b04e776ce258c075c95

Contents?: true

Size: 1.5 KB

Versions: 11

Compression:

Stored size: 1.5 KB

Contents

module EnumStateMachine
  module Integrations #:nodoc:
    module ActiveModel
      # Represents the encapsulation of all of the details to be included in an
      # update to state machine observers.  This allows multiple arguments to
      # get passed to an observer method (instead of just a single +object+)
      # while still respecting the way in which ActiveModel checks for the
      # object's list of observers.
      class ObserverUpdate
        # The method to invoke on the observer
        attr_reader :method
        
        # The object being transitioned
        attr_reader :object
        
        # The transition being run
        attr_reader :transition
        
        def initialize(method, object, transition) #:nodoc:
          @method, @object, @transition = method, object, transition
        end
        
        # The arguments to pass into the method
        def args
          [object, transition]
        end
        
        # The class of the object being transitioned.  Normally the object
        # getting passed into observer methods is the actual instance of the
        # ActiveModel class.  ActiveModel uses that instance's class to check
        # for enabled / disabled observers.
        # 
        # Since state_machine is passing an ObserverUpdate instance into observer
        # methods, +class+ needs to be overridden so that ActiveModel can still
        # get access to the enabled / disabled observers.
        def class
          object.class
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
enum_state_machine-0.8.0 lib/enum_state_machine/integrations/active_model/observer_update.rb
enum_state_machine-0.7.0 lib/enum_state_machine/integrations/active_model/observer_update.rb
enum_state_machine-0.6.0 lib/enum_state_machine/integrations/active_model/observer_update.rb
enum_state_machine-0.5.0 lib/enum_state_machine/integrations/active_model/observer_update.rb
enum_state_machine-0.4.1 lib/enum_state_machine/integrations/active_model/observer_update.rb
enum_state_machine-0.4.0 lib/enum_state_machine/integrations/active_model/observer_update.rb
enum_state_machine-0.3.0 lib/enum_state_machine/integrations/active_model/observer_update.rb
enum_state_machine-0.2.0 lib/enum_state_machine/integrations/active_model/observer_update.rb
enum_state_machine-0.1.1 lib/enum_state_machine/integrations/active_model/observer_update.rb
enum_state_machine-0.1.0 lib/enum_state_machine/integrations/active_model/observer_update.rb
enum_state_machine-0.0.1 lib/enum_state_machine/integrations/active_model/observer_update.rb