Method: Fera::Base#clone_selected_fields

Defined in:
lib/fera/models/base.rb

#clone_selected_fields(model, fields) ⇒ Object



269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
# File 'lib/fera/models/base.rb', line 269

def clone_selected_fields(model, fields)
  fields = fields.is_a?(Array) ? fields : fields.to_s.split(',').map(&:strip)

  # find fields
  changed_attributes = HashWithIndifferentAccess.new
  changed_attributes[model.class.primary_key] = model.attributes[model.class.primary_key]
  fields.each do |key|
    if key.include?(':')
      clone_sub_fields(model, key, changed_attributes)
    elsif fields.include?(key)
      changed_attributes[key] = model.attributes[key]
    end
  end

  # create new object
  self.class.new(changed_attributes, true)
end