Module: Promiscuous::Publisher::Attributes

Extended by:
ActiveSupport::Concern
Included in:
Generic
Defined in:
lib/promiscuous/publisher/attributes.rb

Instance Method Summary collapse

Instance Method Details

#include_attributes?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/promiscuous/publisher/attributes.rb', line 23

def include_attributes?
  true
end

#payloadObject



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

def payload
  return nil unless include_attributes?

  Hash[attributes.map do |field|
    optional = field.to_s[-1] == '?'
    field = field.to_s[0...-1].to_sym if optional
    [field, payload_for(field)] if !optional || instance.respond_to?(field)
  end]
end

#payload_for(field) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/promiscuous/publisher/attributes.rb', line 14

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