次のコントローラーメソッドがあります。
class InventoryItemsController < ApplicationController
def import
params.permit(:code, :vendor_id, :price)
InventoryItem.import(params[:file])
redirect_to admin_index_path, notice: "Inventory Imported."
end
end
次に、モデル メソッドを呼び出します。
class InventoryItem < ActiveRecord::Base
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
InventoryItem.create! row.to_hash
end
end
end
私が今できるようにしたいのは、同様の CSV インポート方法を使用して既存のレコードを更新し (価格変更など)、:code
属性が一意である場合にのみ新しいレコードを追加することです。1 つのレコードの単純な更新であれば、おそらくこれを行うことができますが、CSV アップロードでこれに取り組む方法がわかりません。助けてください?前もって感謝します!