簡體   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