Class: RademadeAdmin::CsvService
- Inherits:
-
Object
- Object
- RademadeAdmin::CsvService
- Defined in:
- app/services/csv_service.rb
Instance Method Summary collapse
- #column_names ⇒ Object
- #field_value(field, item) ⇒ Object
-
#initialize(model_info, items) ⇒ CsvService
constructor
A new instance of CsvService.
- #item_data(item) ⇒ Object
- #to_csv ⇒ Object
Constructor Details
#initialize(model_info, items) ⇒ CsvService
Returns a new instance of CsvService.
7 8 9 10 |
# File 'app/services/csv_service.rb', line 7 def initialize(model_info, items) @model_info = model_info @items = items end |
Instance Method Details
#column_names ⇒ Object
21 22 23 |
# File 'app/services/csv_service.rb', line 21 def column_names @model_info.data_items.csv_fields.map(&:label) end |
#field_value(field, item) ⇒ Object
33 34 35 36 |
# File 'app/services/csv_service.rb', line 33 def field_value(field, item) return field.csv_preview_handler.call(item) unless field.csv_preview_handler.nil? item.send(field.csv_preview_accessor).to_s end |
#item_data(item) ⇒ Object
25 26 27 28 29 30 31 |
# File 'app/services/csv_service.rb', line 25 def item_data(item) data = [] @model_info.data_items.csv_fields.each do |field| data << field_value(field, item) end data end |
#to_csv ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'app/services/csv_service.rb', line 12 def to_csv ::CSV.generate(col_sep: ',', encoding: 'utf-8') do |csv| csv << column_names @items.each do |item| csv << item_data(item) end end end |