если вы используете Postgresql , то вы можете использовать это в application_record.rb
def self.to_csv_copy(attrs="*", header=[])
rc = connection.raw_connection
rv = header.empty? ? [] : ["#{header.join(',')}\n"]
sql = self.all.select(attrs).to_sql
rc.copy_data("copy (#{sql}) to stdout with csv") do
# rubocop:disable AssignmentInCondition
while line = rc.get_copy_data
rv << line
end
end
rv.join
end
, а затем сделать
Location.to_csv_copy(%w{id city address}, ['Id', 'City', 'Address'])
Это даже быстрее, чемвышеуказанное решение.