可以'rake db:seed'告诉你它正在窒息哪条记录?

时间:2012-11-01 19:47:32

标签: ruby-on-rails ruby

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

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

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

编辑:

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

我有一个平面文件,表示我需要的数据。此文件是从未经验证的数据库创建的,该数据库具有许多不同的拼写,例如Proctor(和| y | avec | gen)Gamble。我已经能够翻译几乎所有这些,但有一些已经滑过裂缝仍然给我带来麻烦。当我运行

时,是否可以从rake中看到平面文件的哪一行
flat_file.each_line

造成了麻烦?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

你可以打电话。有效吗?在您的对象创建之前,如果该对象失败,则打印出错误消息以及某个地方有问题的记录的任何其他属性供以后查看。