CSVファイルのデータを読み込んで処理をする


業務で、他システムが吐き出したCSVファイルを読み込んで処理をするといったことをやっていたので、その方法を連携したいと思います。

view

<%= form_tag({controller: "objects", action: "import", method: "post"}, {multipart: true}) do %>
  <%= file_field_tag :file %>
  <%= submit_tag "オブジェクトを一括インポート" %>
<% end %>

model

def self.import(file)
  CSV.foreach(file.path, headers: true) do |row|
    winner = Hash.new
    winner = row.to_hash.slice(*updatable_attributes)
  end
end

conroller

@winner = ::Media::Lottery.import(params[:file])

コントローラの@winnersにCSVファイルのデータをハッシュで受け取った値が格納されています。
@winner['キー名']で、指定したキー名の値を取得できます。

オススメの記事

Rails 機密情報を環境変数に保持する Ruby 便利なnilガード
Rails NOT NULL句を綺麗に書こう Ruby 繰り返し構文
Rails DBから条件を指定せずに、ランダムにレコードを取得する Rails Fat Model, Skinny Controllerという考え方
Rails CSVファイルのデータを読み込んで処理をする Ruby Procとlambda式
次の記事 >> マイグレーションコマンド一覧
前の記事 >> Fat Model, Skinny Controllerという考え方
Railsの記事一覧へ戻る