Class: ActiveReport::Record

Inherits:
Base
  • Object
show all
Defined in:
lib/active_report/record.rb

Instance Method Summary collapse

Methods inherited from Base

#csv_force_encoding?, #csv_options, evaluate, export, import, #import_adapter, #import_options, #initialize

Constructor Details

This class inherits a constructor from ActiveReport::Base

Instance Method Details

#exportObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/active_report/record.rb', line 16

def export
  %i[except only].each { |key| @opts[key] = @opts[key].map(&:to_s) }

  if active_record_table_class?(@data)
    @opts[:headers] = (@opts[:headers] || humanize_values(active_record_column_names(@data)))
    @opts[:stream] ? export_stream : export_csv
  else
    @data = if active_relation_object?(@data)
              JSON.parse(@data.to_json).flatten
            else
              merge(@data.attributes)
            end

    ActiveReport::Hash.export(@data, @opts)
  end
end

#importObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/active_report/record.rb', line 33

def import
  if active_record_table_object?(@opts[:model])
    raise ArgumentError,
          'Model must be an ActiveRecord::Base object.'
  end

  @data = ActiveReport::Hash.import(@data, headers: @opts[:headers], options: @opts[:options])
  @data = munge(@data)

  records = []
  @data.each do |data|
    params = {}

    data.each do |key, value|
      key = key.to_s.downcase.gsub(/ |-/, '_').to_sym
      params[key] = value
    end

    filter(params)
    params.delete(:id)
    records << params
  end

  @opts[:model].import(records, import_options)
end