class MultipleMan::ModelPopulator
Attributes
fields[RW]
record[RW]
Public Class Methods
new(record, fields)
click to toggle source
# File lib/multiple_man/model_populator.rb, line 4 def initialize(record, fields) self.record = record self.fields = fields end
Public Instance Methods
populate(payload)
click to toggle source
# File lib/multiple_man/model_populator.rb, line 9 def populate(payload) data = payload[:id].merge(payload[:data]) fields_for(data).each do |field| source, dest = field.is_a?(Array) ? field : [field, field] populate_field(dest, data[source]) end record end
Private Instance Methods
fields_for(data)
click to toggle source
# File lib/multiple_man/model_populator.rb, line 40 def fields_for(data) fields || data.keys end
populate_field(field, value)
click to toggle source
# File lib/multiple_man/model_populator.rb, line 26 def populate_field(field, value) # Attempts to populate source id if id is specified if field.to_s == 'id' && record.respond_to?('source_id') field = 'source_id' end setter = "#{field}=" if record.respond_to?(setter) record.send(setter, value) elsif should_raise? raise "Record #{record} does not respond to #{setter}" end end
should_raise?()
click to toggle source
Raise an exception if explicit fields were provided.
# File lib/multiple_man/model_populator.rb, line 22 def should_raise? fields.present? end