繁体   English   中英

在rake任务中使用动态查找器时的未定义保存方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM