Class: ActiveReport::Record
Instance Method Summary collapse
-
#export ⇒ Object
rubocop:disable Metrics/PerceivedComplexity.
-
#import ⇒ Object
rubocop:enable Metrics/PerceivedComplexity.
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
#export ⇒ Object
rubocop:disable Metrics/PerceivedComplexity
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/active_report/record.rb', line 11 def export %i[except only].each { |key| @opts[key] = @opts[key].map(&:to_s) } if !@data.is_a?(ActiveRecord::Relation) && @data.try(:superclass) == ActiveRecord::Base @opts[:headers] = (@opts[:headers] || humanize_values(@data.column_names)) @opts[:stream] ? export_stream : export_csv else @data = if @data.is_a?(ActiveRecord::Relation) JSON.parse(@data.to_json).flatten else merge(@data.attributes) end ActiveReport::Hash.export(@data, @opts) end end |
#import ⇒ Object
rubocop:enable Metrics/PerceivedComplexity
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/active_report/record.rb', line 30 def import if @opts[:model].nil? || (@opts[:model].superclass != ActiveRecord::Base) 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, ) end |