0

我正在学习 Ruby on Rails,在此过程中,我正在创建一个示例应用程序,该应用程序从 csv 文件(涉及芝加哥凶杀案受害者的信息)中获取数据,将数据保存到数据库中,并将此信息显示给用户。

我正在从 .csv 文件的每一行中获取日期,并且遇到了一个问题,即看似随机的日期在数据库中将显示为“nil”,但其他日期将被正确导入。我还获取了 Name 和 Age 属性,这些属性被正确导入并且没有问题。这只是我遇到问题的日期

这是我正在使用的模型:

class CreateVictims < ActiveRecord::Migration
  def change
    create_table :victims do |t|
      t.string :name
      t.integer :age
      t.date :date

      t.timestamps
    end
  end
end

这是我用来导入数据的 rake 任务:

require 'csv'
namespace :import_victims_csv do
  task :create_victims => :environment do
    csv_text = File.read('public/seed_data/2013all.csv')
    csv = CSV.parse(csv_text, :headers => true)
    csv.each do |row|
        Victim.create!(date: row[1], age: row[5], name: row[8]) 
    end
  end
end

我想说大约 50% 的日期将正确导入,但其他 50% 只会导致“nil”。源 .csv 文件列出了所有名称的日期。

作为参考,这是我从中导入的 csv 文件的链接:CSV

4

1 回答 1

1

查看您的数据集,似乎日期格式为mm/dd/yyyy,根据此问题/答案,不再支持该格式的解析。因此,也许您可​​以在创建模型之前尝试重新格式化日期:

csv.each do |row|
    formatted_date = Date.strptime row[1], '%m/%d/%Y'
    Victim.create!(date: formatted_date, age: row[5], name: row[8]) 
end
于 2013-10-04T00:52:27.860 回答