Module: ExcelSerializer::ObjectSerializer

Extended by:
ActiveSupport::Concern
Includes:
HeadersTranslator, Writer
Defined in:
lib/excel_serializer/object_serializer.rb

Instance Method Summary collapse

Methods included from HeadersTranslator

#compute_headers, #headers

Instance Method Details

#excel_fileObject



63
64
65
66
67
68
69
70
71
72
73
# 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

#initialize(resources, file_path: nil) ⇒ Object



54
55
56
57
58
59
60
61
# 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

#objectObject



75
76
77
# File 'lib/excel_serializer/object_serializer.rb', line 75

def object
  @object
end

#single_resource_all_info(resource) ⇒ Object



79
80
81
82
83
84
85
86
87
# 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) ⇒ Object



89
90
91
92
93
94
95
96
97
98
# 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