私はCSV経由で人物の詳細をエントリとしてインポートすることができます。CSVでインポートして同時にフィールドを設定する
スプレッドシートにその行にIDが含まれていない場合はエントリが作成され、それ以外の場合はID番号に従ってエントリが更新されます。
最終的には、IDがない場合はエントリをインポートするときに 'CreatedAt'フィールドを更新し、それ以外の場合は一度だけ残しておきます(各エントリは 'CreatedAt'を一度設定する必要があります)。
すでに「CreatedAt」セットがあり、更新するだけの場合は何もしないでください。
これは私がこれまで持っているコードです:
コントローラファイル:
def import
Votsphonebook.import(params[:file])
redirect_to root_url, notice: "Entries updated!"
end
モデルファイル:
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
votsphonebook_hash = row.to_hash
votsphonebook = Votsphonebook.where(id: votsphonebook_hash["id"])
if votsphonebook.count == 1
votsphonebook.first.update_attributes(votsphonebook_hash)
else
Votsphonebook.create!(votsphonebook_hash)
end
end
end
私はちょうど私のコードのエントリ・ポイントを必要とします現在の行を調べてif文を実行することができます。
はupdated_at
とcreated_at
列が自動的にアクティブレコードによって移入され、あなたに
更新されるetryごとにカスタム列を更新することはできますか?たとえば、私は毎回 't'に設定したい「承認済み」の列を持っていますか? – jimps
'created_at'はレコードが作成されると一度だけ設定され、' updated_at'はレコードが変更されるたびに設定されます。 – rebagliatte
ありがとうございますが、created_atとupdated_atを忘れてしまったカスタムカラムについてはどうですか? – jimps