Rails CSV上传到更新记录 - 属性未保存到db

时间:2013-12-18 02:00:10

标签: ruby-on-rails csv

我有一个使用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)

关于我为什么没有正确更新价格属性的任何想法?

1 个答案:

答案 0 :(得分:0)

尝试这一点,似乎csv不会返回符号化的哈希键 和切片似乎没有在那里工作。你的内心怎么样? CSV.foreach循环:

inventory_item.update_attributes(:price => row.to_hash["price"])