Module: Promiscuous::Publisher::Attributes

Extended by:
ActiveSupport::Concern
Included in:
ActiveRecord, Ephemeral, Mongoid
Defined in:
lib/promiscuous/publisher/attributes.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#include_attributes?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/promiscuous/publisher/attributes.rb', line 21

def include_attributes?
  true
end

#payloadObject



4
5
6
7
8
# File 'lib/promiscuous/publisher/attributes.rb', line 4

def payload
  return nil unless include_attributes?

  Hash[attributes.map { |field| [field, payload_for(field)] }]
end

#payload_for(field) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/promiscuous/publisher/attributes.rb', line 10

def payload_for(field)
  value = instance.__send__(field)
  if value.respond_to?(:promiscuous_publisher)
    value.promiscuous_publisher.new(options.merge(:instance => value)).payload
  elsif value.class.respond_to?(:promiscuous_publisher)
    value.class.promiscuous_publisher.new(options.merge(:instance => value)).payload
  else
    value
  end
end