我有一个简单的rake任务从CSV文件导入记录并将它们保存到数据库中。
require 'csv'
namespace :import do
task :items => :environment do
CSV.foreach(Rails.root.to_s + '/public/data/items.csv', :headers => true) do |row|
@item_id = row[1]
if item_id
i = Item.find_or_create_by_item_id(@item_id)
i.update_attributes(
:item_id => @item_id,
:category => row[2],
:price => row[3],
)
i.save
end
end
end
end
当我运行它时,我收到以下错误。
rake aborted!
undefined method `save' for []:ActiveRecord::Relation
这工作正常,我在同一模型上使用动态查找器进行其他rake任务,工作方式相同。我无法弄清楚改变了什么或导致了什么。任何想法都将不胜感激。
答案 0 :(得分:1)
你有if item_id
。那应该是@item_id
吗?此外,update_attributes
会自动保存记录。您无需致电save()
。删除该行,看看是否摆脱了错误。
作为旁注,为什么你有一个名为item_id
的项的属性?除非你有充分的理由不这样做,否则使用id
会好得多。