Sha256: 3e8ea304233c1b59569e2f84bd708d76d24e50980b329a4dacf8133750de1051
Contents?: true
Size: 1.21 KB
Versions: 2
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true require 'active_record' require 'activerecord-import' require 'deep_pluck' class Lite::Report::Record < Lite::Report::Base def export assign_headers_to_csv_options! generate_or_stream_export! end def import assert_klass_data_option! assign_import_csv_options! @data = Lite::Report::Hash.import(@data, csv_options: @csv_options, data_options: @data_options) .each { |row| row.delete(:id) || row.delete('id') } klass.import(@data, @import_options) end private def assert_klass_data_option! return if klass raise ArgumentError, '":klass" data_option is required' end def assign_headers_to_csv_options! return unless write_headers? @csv_options[:headers] ||= class_columns(@data) end def assign_import_csv_options! @csv_options[:headers] ||= class_columns(klass) end def assign_export_data! columns = class_columns(@data) @data = @data.result if ransack_class?(@data) @data = @data.deep_pluck(*columns) @data = [@data] unless @data.is_a?(Array) end def generate_export! assign_export_data! super end def stream_export! assign_export_data! super end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
lite-report-1.0.5 | lib/lite/report/record.rb |
lite-report-1.0.4 | lib/lite/report/record.rb |