Class: AbAdmin::Utils::CsvDocument
- Defined in:
- lib/ab_admin/utils/csv_document.rb
Instance Method Summary collapse
- #column_data ⇒ Object
- #columns_names ⇒ Object
- #default_columns ⇒ Object
- #each_record ⇒ Object
- #filename ⇒ Object
-
#initialize(source, options = {}) ⇒ CsvDocument
constructor
A new instance of CsvDocument.
- #render(context = nil, options = {}) ⇒ Object
Constructor Details
#initialize(source, options = {}) ⇒ CsvDocument
Returns a new instance of CsvDocument.
6 7 8 9 10 |
# File 'lib/ab_admin/utils/csv_document.rb', line 6 def initialize(source, = {}) @source = source @options = @klass = @options.delete(:klass) || extract_klass end |
Instance Method Details
#column_data ⇒ Object
16 17 18 |
# File 'lib/ab_admin/utils/csv_document.rb', line 16 def column_data @columns_names ||= @options[:column_data] || default_columns end |
#columns_names ⇒ Object
20 21 22 |
# File 'lib/ab_admin/utils/csv_document.rb', line 20 def columns_names (@options[:column_names] || default_columns).map { |column| column.is_a?(Symbol) ? @klass.human_attribute_name(column) : column } end |
#default_columns ⇒ Object
12 13 14 |
# File 'lib/ab_admin/utils/csv_document.rb', line 12 def default_columns @default_columns ||= @klass.column_names end |
#each_record ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/ab_admin/utils/csv_document.rb', line 43 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 |
#filename ⇒ Object
24 25 26 |
# File 'lib/ab_admin/utils/csv_document.rb', line 24 def filename @filename ||= [@options[:filename] || "#{@klass.model_name.plural}-#{Time.now.strftime('%Y-%m-%d')}", '.csv'].join end |
#render(context = nil, options = {}) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/ab_admin/utils/csv_document.rb', line 28 def render(context=nil, ={}) ::CSV.generate(col_sep: @options[:column_separator] || ',') do |csv| csv << columns_names I18n.with_locale [:locale] do each_record do |item| csv << column_data.map do |column| value = column.is_a?(Symbol) ? item.public_send(column) : context.instance_exec(item, &column) AbAdmin.pretty_data value end end end end end |