4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/promiscuous/subscriber/attributes.rb', line 4
def process
super
return unless process_attributes?
self.class.attributes.each do |attr|
attr = attr.to_s
unless payload.has_key?(attr)
raise "Attribute '#{attr}' is missing from the payload"
end
options = {}
options[:parent] = instance
options[:old_value] = instance.__send__(attr) if instance.respond_to?(attr)
sub = Promiscuous::Subscriber.subscriber_for(payload[attr], options)
sub.process
instance.__send__("#{attr}=", sub.instance) if sub.should_update_parent?
end
end
|