1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rails CSVファイルのエクスポート

Posted at

RubyのCSVライブラリを使用できるようにする

config/application.rb
require 'csv'

追記後サーバーを再起動

Userの名前をCSV出力する

アプリを使っている全ユーザーの名前(name),メールアドレス(email),登録日時(created_at)をCSV出力できるようにしたい場合User.rbに次のように記述する。

models/user.rb
class User << ApplicationRecord
  def self.csv_attributes
    # csvデータに、どの属性をどの順番で出力するのかを定義している。
    ['name', 'email', 'created_at']
  end

  def self.generate_csv
    # 最終的な戻り値がこの下の行のCSV.generateによって生成される文字列。
    CSV.generate(headers: true) do |csv|
      # csvデータのヘッダー情報を入れている
      csv << csv_attributes
      all.each do |user|
        csv << csv_attributes.map{|attr| user.send(attr)}
      end
    end
  end
end

コントローラー内でgenerate_csvを呼び出す

CSV出力したいアクション内で下記を追記すれば全てのユーザー情報をCSVファイルに出力することができます。

Users_controller.rb
users = User.all

respond_to do |format|
  format.csv { send_data @users.generate_csv, filename: "tasks-#{Time.zone.now.strftime('%Y%m%d%S')}.csv" }
end
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?