newleaders/thincloud-messagebus

View on GitHub
lib/thincloud/messagebus/active_record/payload.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Thincloud
  module Messagebus
    module ActiveRecord
      # "Enhanced" payload for ActiveRecord events to be used in
      # conjunction with Messagebus.subscribe_to_model.
      #
      # Original payload can be retrieved with Payload.raw
      Payload = Struct.new(:raw) do
        def model
          raw.fetch(:object)
        end

        def changes
          raw.fetch(:previous_changes){ Hash.new }
        end

        def new?
          !changes["id"].nil? && changes["id"].first.nil? && !changes["id"].last.nil?
        end
      end # Payload
    end # ActiveRecord
  end # Messagebus
end # Thincloud