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