Class: AbAdmin::Utils::CsvDocument
Instance Method Summary
collapse
#call_method_or_proc_on, #evaluate_method
Constructor Details
#initialize(source, options = {}) ⇒ CsvDocument
Returns a new instance of CsvDocument.
8
9
10
11
12
|
# File 'lib/ab_admin/utils/csv_document.rb', line 8
def initialize(source, options = {})
@source = source
@options = options
@klass = @options.delete(:klass) ||
end
|
Instance Method Details
#column_data ⇒ Object
18
19
20
|
# File 'lib/ab_admin/utils/csv_document.rb', line 18
def column_data
@columns_names ||= @options[:column_data] || default_columns
end
|
#columns_names ⇒ Object
22
23
24
|
# File 'lib/ab_admin/utils/csv_document.rb', line 22
def columns_names
(@options[:column_names] || default_columns).map { |column| column.is_a?(Symbol) ? @klass.human_attribute_name(column) : column }
end
|
#default_columns ⇒ Object
14
15
16
|
# File 'lib/ab_admin/utils/csv_document.rb', line 14
def default_columns
@default_columns ||= @klass.column_names
end
|
#each_record ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/ab_admin/utils/csv_document.rb', line 40
def each_record
if @source.respond_to?(:find_each)
@source.find_each do |item|
yield item
end
else
Array(@source).each do |item|
yield item
end
end
end
|
26
27
28
|
# File 'lib/ab_admin/utils/csv_document.rb', line 26
def filename
@filename ||= [@options[:filename] || "#{@klass.model_name.plural}-#{Time.now.strftime('%Y-%m-%d')}", '.csv'].join
end
|
30
31
32
33
34
35
36
37
38
|
# File 'lib/ab_admin/utils/csv_document.rb', line 30
def render
::CSV.generate(col_sep: @options[:column_separator] || ',') do |csv|
csv << columns_names
each_record do |item|
csv << column_data.map { |column| AbAdmin.pretty_data call_method_or_proc_on(item, column, exec: false) }
end
end
end
|