class CmAdmin::Models::Export

def format_records(records, model, columns, helpers)

def format_records(records, model, columns, helpers)
  custom_fields = model.available_fields[:index].map{|field| field if field.field_type == :custom}.compact
  normal_fields = model.available_fields[:index].map{|field| field unless field.field_type == :custom}.compact
  deserialized_columns = CmAdmin::Utils.deserialize_csv_columns(columns, :as_json_params)
  # This includes isn't recursve, a full solution should be recursive
  records_arr = []
  records.includes(deserialized_columns[:include].keys).find_each do |record|
    record_hash = record.as_json({only: columns.map(&:to_sym)})
    columns.each do |column|
      break unless model.available_fields[:index].map(&:field_name).include?(column.to_sym)
      record_hash[column.to_sym] = record.send(column.to_sym)
    end
    custom_fields.each do |field|
      record_hash[field.field_name.to_sym] = helpers.send(field.helper_method, record, field.field_name)
    end
    records_arr << record_hash
  end
  records_arr
end