module ExcelSerializer::ObjectSerializer

Attributes

attributes_to_serialize[RW]
computed_headers[RW]
config[RW]
included_relations[RW]

Public Class Methods

new(resources, file_path: nil) click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 54
def initialize(resources, file_path: nil)
  self.file_path = file_path
  if resources.is_a?(ActiveRecord::Relation) or resources.is_a?(Array)
    self.resources = resources
  else
    self.resources = [resources]
  end
end

Public Instance Methods

attributes(*attributes_list) click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 22
def attributes(*attributes_list)
  self.attributes_to_serialize ||= []
  self.attributes_to_serialize += attributes_list
end
belongs_to(relation, serializer: nil) click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 27
def belongs_to(relation, serializer: nil)
  self.included_relations ||= {}
  self.included_relations[relation.to_s] = {
    method: relation,
    serializer: (serializer || relation_serializer(relation))
  }
end
current_config() click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 43
def current_config
  self.config ||= ExcelSerializer.config.dup
end
excel_adapter(adapter) click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 35
def excel_adapter(adapter)
  current_config.excel_adapter = adapter
end
excel_file() click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 63
def excel_file
  add_headers('Main')
  method_name = 'each'
  if resources.is_a?(ActiveRecord::Relation)
    method_name = 'find_each'
  end
  resources.send(method_name) do |resource|
    write('Main', single_resource_all_info(resource))
  end 
  close_workbook
end
object() click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 75
def object
  @object
end
relation_serializer(relation) click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 49
def relation_serializer(relation)
  "#{relation.to_s.singularize.camelcase}ExcelSerializer"
end
single_resource_all_info(resource) click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 79
def single_resource_all_info(resource)
  all_info = single_resource_info(resource)
  self.class.included_relations.each do |key, hash|
    all_info += hash[:serializer].constantize.new(nil).single_resource_info(
      resource.send(hash[:method])
    )
  end
  all_info
end
single_resource_info(resource) click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 89
def single_resource_info(resource)
  self.object= resource
  self.class.attributes_to_serialize.map do |attribute|
    if self.respond_to?(attribute)
      self
    else
      resource
    end.send(attribute)
  end
end
translation_adapter(adapter) click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 39
def translation_adapter(adapter)
  current_config.translation_adapter = adapter
end

Private Instance Methods

object=(object) click to toggle source
# File lib/excel_serializer/object_serializer.rb, line 102
def object=(object)
  @object = object
end