DEV Community

Discussion on: Export Records to CSV Files with Rails

Collapse
 
haroldus profile image
haroldus-

How about doing this as a concern instead?

# models/concerns/generate_csv.rb
module GenerateCSV
  extend ActiveSupport::Concern

  class_methods do
    def generate_csv
      CSV.generate(headers: true) do |csv|
        csv << self.attribute_names

        all.each do |record|
          csv << record.attributes.values
        end
      end
    end
  end
end
Enter fullscreen mode Exit fullscreen mode

Then

# models/user.rb
class User
  include GenerateCSV
end
Enter fullscreen mode Exit fullscreen mode

or

# models/whatever.rb
class Whatever
 include GenerateCSV
end
Enter fullscreen mode Exit fullscreen mode
Collapse
 
countalucard2022 profile image
countalucard2022

Great for DRY approach, thanks for this :)