Help us understand the problem. What is going on with this article?

railsでcsvを色々できるCSVメソッド

More than 3 years have passed since last update.

CSVライブラリ

require 'csv'

これで読み込める

CSV.read

csv.rb
require 'csv'

csv_data = CSV.read('member.csv', headers: true)

.read(読み込むcsvの指定,headers:無視したいヘッダー行があるか)

headers:trueにすると上の一行をheaderとして無視する。

CSV.foreach

.readで一気に読み込むのと結果は変わらないがこのやり方でも読み込める

csv.rb
require 'csv'
CSV.foreach('member.csv', headers: true) do |data|
 intro_msg = "#{data["club"]}クラブ所属の#{data["age"]}歳、#{data["name"]}です。\n"
 puts intro_msg
end

CSV.generate

generateはcsvを逆に生成するためのメソッド

csv.rb
require 'csv'
intro_csv = CSV.generate do |csv|
  CSV.foreach('member.csv', headers: true) do |data|
    intro_msg = [
      data["id"],
      data["name"],
      "#{data["club"]}クラブ",
      "#{data["age"]}歳"
    ]
    csv << intro_msg
    puts intro_msg
  end
end

File.open("intro.csv", 'w') do |file|
  file.write(intro_csv)
end

このメソッドは与えられた文字列をラップして CSV のオブジェクトとしてブロックに渡します。 ブロック内で CSV オブジェクトに行を追加することができます。 ブロックを評価した結果は文字列を返します。

https://docs.ruby-lang.org/ja/latest/method/CSV/s/generate.html

generateは1行ずつなので繰り返しかつ1行ずつintro_csvに入れていっているという処理。

参考にした記事

https://qiita.com/shizuma/items/7719172eb5e8c29a7d6e

you8
普段はSNSのプロダクトマネージャーをしています。広告とかチーム運営とかについてはここ( http://you88.space/ )。日曜大工的に個人開発しています。( https://twitter.com/you8802 )作ったランチ募集サービス https://www.tea-pot.net/
https://you88.space/
nana-music
音楽SNSサービス「nana」の開発・運営を行っているスタートアップ
https://nana-music.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away