1

播种数据时,有时会收到如下错误:

Owner(#70279918514200) expected, got String(#70279913263500)

Rake 是否有可能告诉我它窒息的记录是什么?

编辑:

这有更多关于我正在寻找的信息:

我有一个平面文件,它指示我需要的数据。该文件是从一个未经验证的数据库创建的,该数据库对 Proctor (and|y|avec|gen) Gamble 等具有许多不同的拼写。我几乎可以翻译所有这些内容,但也有一些从裂缝中溜走,仍然给我带来麻烦。当我运行时,是否可以从 rake 中看到平面文件的哪一行

flat_file.each_line

惹麻烦了?

4

3 回答 3

7

尝试运行rake db:seed --trace以查看seed.rb文件的哪一行失败。

编辑#1: 现在我知道您正在使用each_line,您可能只需要手动计数以确定行号。

line_count = 0
flat_file.each_line do |line|
  begin
    line_count += 1
    # code for handling `line` goes here
  rescue => e
    puts "Error happened on line #{line_count}: #{e}"
  end
end

编辑#2:如果您正在加载完整文件而不是从其源中流式传输,您还可以摆脱手动line_count变量,否则您必须通过String#lines方法的一些帮助来跟踪。

file_contents.lines.each_with_index do |line, line_count|
  begin
    # code for handling `line` goes here
  rescue => e
    puts "Error happened on line #{line_count}: #{e}"
  end
end
于 2012-11-01T19:49:26.643 回答
1

您应该在加载脚本中捕获错误并使用您需要的信息抛出一个新错误。

于 2012-11-01T20:11:36.427 回答
1

你可以打电话给.valid?在创建对象之前,在您的对象上打印,如果失败,则打印出错误消息和相关记录的任何其他属性,以供以后查看。

于 2012-11-02T00:24:31.780 回答