0

テーブル内のレコードに CSV の行を追加しようとしていますが、実際には何も表示されないという事実を除いて、すべてが正常に機能しているようです。

これが私のRakeタスクです:

namespace :csv do

  desc "Import CSV Data"
  task :c_up => :environment do

    require 'csv'

    csv_file_path = 'db/main.csv'

    CSV.foreach(csv_file_path, :headers => true) do |row|
      row = Entry.create!({
        :one => row[0],
        :two => row[1],
        :three => row[2],
        :four => row[3],
        :five =>row[4],
        :six => row[5],
        :seven => row[6],
        :eight => row[7],
        :nine => row[8],
        :ten => row[9]
      })
      row.save
      puts "Entry added!"

    end
  end
end

私の CSV のヘッダーは、属性に一致するように名前が付けられています。

タスクを実行すると、エラーは表示されず、「エントリが追加されました!」というメッセージがすべて表示されます。コンソールに表示されます。row =andなしで試してrow.saveみましたが、それらなしで多くの例を見てきましたが、役に立ちません。

レーキが終了した後、レコードはまったくありません。私が間違っていることは明らかですか?これは、私が見たほとんどの例に従っているようです。

編集 すべての回答とコメントに感謝します! 明らかに、これには構文に至るまで欠陥があります。私はあなたの提案を試して、後でこれを更新します。再度、感謝します!

編集2 皆さんが指摘したのは構文の問題であることが判明したので、皆さんに+1をありがとう! まだ機能していないとコメントした理由は、@jvnillのコメントなしでは理解できなかった無関係の問題でした。

4

3 に答える 3

1

Entry.create!行に割り当てられる必要はなく、. も必要ありませんrow.save。「{}」も知っている

Entry.create!(
        :one => row[0],
        :two => row[1],
        :three => row[2],
        :four => row[3],
        :five =>row[4],
        :six => row[5],
        :seven => row[6],
        :eight => row[7],
        :nine => row[8],
        :ten => row[9]
      )

create メソッドは行にデータを入力し、同様に保存します。

于 2013-02-28T14:10:17.643 に答える
1

試してみてください:

row = Entry.new(
        :one => row[0],
        :two => row[1],
        :three => row[2],
        :four => row[3],
        :five =>row[4],
        :six => row[5],
        :seven => row[6],
        :eight => row[7],
        :nine => row[8],
        :ten => row[9]
      )
      row.save!

{ }なしで、save!あり

簡単にするために、これを試すこともできます。

Entry.create!(row.to_hash)
于 2013-02-28T14:15:38.833 に答える
0

名前空間 :csv する

desc "CSV データのインポート" task :c_up => :environment do

require 'csv'

csv_file_path = 'db/main.csv'

CSV.foreach(csv_file_path, :headers => true) do |row|
  Entry.create!({
    :one => row[0],
    :two => row[1],
    :three => row[2],
    :four => row[3],
    :five =>row[4],
    :six => row[5],
    :seven => row[6],
    :eight => row[7],
    :nine => row[8],
    :ten => row[9]
  })
end

終了 終了

于 2013-02-28T14:52:42.270 に答える