簡體   English   中英

Rake任務不將CSV添加到數據庫

[英]Rake task not adding CSV to database

我正在嘗試將CS​​V行添加到表中的記錄中,除了事實上沒有任何實際顯示之外,一切似乎都正常。

這是我的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 =row.save因為我看過很多沒有這些的例子,但它沒有幫助。

耙子完成后根本沒有任何記錄。 有什么明顯的東西我做錯了嗎? 看來這是我見過的大多數例子。

編輯感謝您的所有答案和評論! 顯然這一直是語法上的缺陷,我將嘗試你的建議,我會在之后更新。 再次感謝!

編輯2結果證明這是一個你們都指出的語法問題,所以給大家+1,謝謝! 我評論它仍然沒有工作的原因是一個無關的問題,如果沒有@jvnill的評論,我不會想到這個問題。

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方法將填充行並保存它。

嘗試:

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!

沒有{} ,並且保存!

您甚至可以嘗試使用它,使其更簡單:

Entry.create!(row.to_hash)

命名空間:csv do

desc“導入CSV數據”任務:c_up =>:環境做

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

結束

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM