[英]Undefined save method when using dynamic finders in rake task
我有一个简单的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
这工作正常,我在相同模型上以相同的方式使用动态查找器进行了其他耙工作。 我无法弄清楚是什么原因引起的。 任何想法将不胜感激。
您拥有if item_id
。 应该是@item_id
吗? 另外, update_attributes
自动保存记录。 您不需要调用save()
。 删除该行,看看是否能消除该错误。
附带说明一下,为什么会有Item的名为item_id
的属性? 除非您有充分的理由不使用id
否则最好仅使用id
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.