Если он изолирован от одной модели AR, я бы добавил метод экземпляра to_custom_csv_array
def to_custom_csv_array
[self.from,self.to,self.created_at]
end
затем переопределить поиск в классе
def self.find(*args)
collection = super
collection.extend(CustomToCSV) if collection.is_a?(Array)
end
и в CustomToCSV определите to_custom_csv для генерации csv
module CustomToCSV
def to_custom_csv
FasterCSV.generate do |csv|
csv << ["from","to", "received"]
csv << self.map {|obj| obj.to_custom_csv_array}
end
end
end
Это из памяти, но должно работать.