繁体   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