Module: Promiscuous::Publisher::Model::Base::PromiscuousMethodsBase

Included in:
PromiscuousMethods, Ephemeral::PromiscuousMethods, Mongoid::PromiscuousMethods
Defined in:
lib/promiscuous/publisher/model/base.rb

Instance Method Summary collapse

Instance Method Details

#attribute(attr) ⇒ Object



33
34
35
36
37
# File 'lib/promiscuous/publisher/model/base.rb', line 33

def attribute(attr)
  value = @instance.__send__(attr)
  value = value.promiscuous.payload if value.respond_to?(:promiscuous)
  value
end

#attributesObject



29
30
31
# File 'lib/promiscuous/publisher/model/base.rb', line 29

def attributes
  Hash[@instance.class.published_attrs.map { |attr| [attr, self.attribute(attr)] }]
end

#get_dependencyObject



39
40
41
42
# File 'lib/promiscuous/publisher/model/base.rb', line 39

def get_dependency
  @collection ||= @instance.class.promiscuous_collection_name
  Promiscuous::Dependency.new(@collection, :id, id)
end

#idObject



44
45
46
# File 'lib/promiscuous/publisher/model/base.rb', line 44

def id
  @instance.id
end

#initialize(instance) ⇒ Object



13
14
15
# File 'lib/promiscuous/publisher/model/base.rb', line 13

def initialize(instance)
  @instance = instance
end

#payload(options = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/promiscuous/publisher/model/base.rb', line 17

def payload(options={})
  msg = {}
  msg[:types] = @instance.class.ancestors.select { |a| a < Promiscuous::Publisher::Model::Base }.map(&:publish_as)
  msg[:id]    = @instance.id.to_s
  unless options[:with_attributes] == false
    # promiscuous_payload is useful to implement relays
    msg[:attributes] = @instance.respond_to?(:promiscuous_payload) ? @instance.promiscuous_payload :
                                                                     self.attributes
  end
  msg
end