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