让我们假设一个模型具有以下标题(ID,Name),但其中一个具有带有其他标题的CSV文件,例如但不限于(ID,名称,价格,位置)。如何更改Model.rb文件以跳过不存在的标题?
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
product = find_by_id(row["id"]) || new
product.attributes = row.to_hash.slice(*accessible_attributes)
product.save!
end
end
答案 0 :(得分:0)
以下代码将创建新产品或编辑现有产品。您可以在find_or_create_by块中添加所需的属性。
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
self.find_or_create_by(id: row["id"]) do |product|
product.name = row["name"]
end
end
end
如果你只需要id和名字,你可以在rails 4中做这样的事情。
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
self.where(:id => row["id"], :name => row["name"]).first_or_create
end
end