2020年7月31日より「押さえておきたいWeb知識」をリニューアルしました。

RailsでCSV出力する方法を解説!

CSV出力機能を実装することになりましたので、備忘録も兼ねて記事を書いてみました。

CSV出力機能を実装してみたい、CSV出力機能とはどのようなものか知りたい方は是非、ご覧になって下さい。

1.CSVとは?

普段データをやりとりする際に「CSV」がよく使用されます。

CSV出力する方法をお話していく前に「CSV」とは何かまず始めに見ていきましょう。

「CSV」とは「Comma Separated Value」という頭文字をとって名付けられたものです。

名前を見て分かるようにCSVファイルは「,(カンマ)」で区切られたものとなっています。

CSVは互換性が高く、様々なソフトに取り込んだり、編集したりすることが可能となっています。

CSVの特徴

・拡張子は「.csv」

・汎用性がある

 




 

2.アプリケーション作成

CSVとはどのようなものかが分かりましたので、実際にCSV機能を実装していきましょう。

まず始めに「csv」というアプリケーションを作成していきます。

次に「csv」のディレクトリに移動し、データベースを作成します。

今回は簡易的にscafflodを使用してPostモデルを作成します。

Postモデルはnameというカラム(string型)、postというカラム(text型)を持つとします。

scaffoldコマンドを実行するとたくさんのファイルが自動生成されました。

これで雛型は完成しましたが、最後にデータベースのテーブルを作成していきましょう。

テーブルを作成するにはマイグレーションファイルを使用します。

次のコマンドを実行するとテーブルを作成することができます。

これでテーブルを作成することができました。

 




 

3.CSV機能を実装する

1.CSV出力ボタンを設置する

CSV出力ボタンはどこに設置しても大丈夫ですが、今回は「index.html.erb」に設置します。

2.Controllerにフォーマット毎の出力内容を指定する

次にindexアクション内にフォーマット毎の出力内容を指定します。

respond_toでリクエストによって出力フォーマットを分けています。

CSV形式でリクエストがあった場合、send_dataメソッドを使用してレスポンスを行い、ブラウザからCSVファイルとして取り出すことができる仕組みになっています。

3.Modelにメソッドを定義する

Postモデルには以下のようにメソッドを定義しています。

csv_attributesメソッドではどのカラムをどのような順序で出力するかを定義しています。

また、generate_csvメソッドではカラム名に対応するPostモデルのレコードをすべて取得し、CSVに出力する仕組みになっています。

 




 

4.CSVを取り出してみる

それでは実際にCSVが取り出せるか確認してみましょう。

「/posts」にアクセスすると以下のような画面がでてきます。

「CSV出力」のリンクをクリックすると以下のようにCSVファイルを無事取り出すことができました。

 




 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です