0

我有一个简单的 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 任务在同一模型上使用动态查找器以相同的方式工作。我无法弄清楚发生了什么变化或导致这种情况的原因。任何想法将不胜感激。

4

1 回答 1

1

你有if item_id. 应该是这样@item_id吗?此外,update_attributes自动保存记录。你不需要打电话save()。删除该行,看看是否可以消除错误。

附带说明一下,为什么您有一个名为 Item 的属性item_idid除非您有充分的理由不使用,否则仅使用会好得多。

于 2011-10-10T12:22:48.463 回答