【问题标题】:Data casting error when reading from a file in Ruby从 Ruby 中读取文件时出现数据转换错误
【发布时间】:2012-01-24 10:09:25
【问题描述】:

我正在尝试将数据导入 rails (3.1),并且我创建了这个 rake 任务来解析一个制表符分隔的文本文件(由 Mac 上的 Excel 生成),该文件具有标准的 Mac OS X 行结尾。

desc "Import users." 
  task :import_users => :environment do
    File.open("users.txt", "r", '\r').each do |line|
      id, name, age, email = line.strip.split('/t')
      u = User.new(:id => id, :name => name, :age => age, :email => email)
      u.save
    end
  end

但是,当我尝试运行此 rake 任务时,我收到以下错误:

rake aborted!
can't convert String into Integer

我的猜测是 Ruby 不喜欢在我的 User 类中将 Age 标题转换为数字年龄变量。有没有办法我也可以 (a) 跳过文件中的标题行或 (b) 在 Ruby 中即时执行此转换?

注意:这是将某些数据读入 Ruby 的众多尝试之一。每当我之前尝试读取数据时,我似乎从未收到此错误。字符串值总是被强制转换为 0.0。

【问题讨论】:

    标签: ruby-on-rails ruby rake ruby-1.9


    【解决方案1】:

    想到的最简单的解决方案是:

    u = User.new(:id => id, :name => name, :age => Integer(age), :email => email)
    

    当然,如果您在文件的第一行有标题,您仍然会在文件的第一行出现错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-20
      • 2015-05-29
      • 2016-02-03
      • 2021-07-25
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      相关资源
      最近更新 更多