我有一个使用CSV上传更新InventoryItem
记录的系统。
我有这种控制器方法:
def import
InventoryItem.import(params[:file], params[:store_id])
redirect_to vendors_dashboard_path, notice: "Inventory Imported."
end
Which of course calls this model method:
def self.import(file, store_id)
CSV.foreach(file.path, headers: true) do |row|
inventory_item = InventoryItem.find_or_initialize_by_code_and_store_id(row[0], store_id)
inventory_item.update_attributes(:price => row.to_hash.slice(:price))
end
end
我想仅更新更新中的:price
属性,因为:code
和:store_id
不会更改。目前导入的记录的价格均为0.0(大十进制)。不是零,或者是正确的值,而是0.0,所以显然我做错了让这项工作。我知道当我在控制台中执行此操作时,它看起来像这样:
inventory_item = InventoryItem.find_by_id(1)
inventory_item.update_attributes(:price => 29.99)
关于我为什么没有正确更新价格属性的任何想法?
答案 0 :(得分:0)
尝试这一点,似乎csv不会返回符号化的哈希键 和切片似乎没有在那里工作。你的内心怎么样? CSV.foreach循环:
inventory_item.update_attributes(:price => row.to_hash["price"])