0

CSV ファイルからレコードをインポートしてデータベースに保存する単純な rake タスクがあります。

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

これは正常に機能しており、同じモデルで同じ方法で動的ファインダーを使用する他のレーキタスクがあり、正常に機能します。何が変わったのか、何が原因なのかわかりません。どんなアイデアでも大歓迎です。

4

1 に答える 1

1

あなたが持っていif item_idます。それはすべき@item_idですか?また、update_attributesレコードを自動的に保存します。電話する必要はありませんsave()。その行を削除して、エラーが解消されるかどうかを確認してください。

補足として、なぜ Item に という属性があるのitem_idですか? idよほどの理由がない限り、ただ使ったほうがずっといいでしょう。

于 2011-10-10T12:22:48.463 に答える