【问题标题】:Ruby Migration Error: undefined method `id' for nil:NilClassRuby 迁移错误:nil:NilClass 的未定义方法“id”
【发布时间】:2017-04-19 11:04:47
【问题描述】:

使用 Rails 4.2.6、Ruby 2.0.0、OSX 10.11

我正在尝试运行 rails 服务器。在此之前,我运行“rake db:migrate”,然后出现以下错误:

rake 中止! StandardError:发生错误,此迁移和所有后续迁移已取消: nil:NilClass 的未定义方法“id”

我对 Ruby 还是很陌生。有人可以解释错误以及如何解决吗?

谢谢!

【问题讨论】:

  • 能否再添加一些日志?
  • 请发布您遇到错误的跟踪以及迁移
  • 请发布您遇到此问题的迁移代码,或者如果您不想共享代码,请将该迁移文件放在应用程序的 db/migrate 目录之外并运行迁移再次,如果您在任何其他迁移文件中运行迁移时遇到任何其他问题,请为此执行相同的操作。运行迁移后,将所有这些文件再次放入您的 db/migrate 文件夹,然后再次运行迁移。我认为它会解决您的问题。
  • 这个错误意味着你试图在 nil 的对象上调用 .id
  • 如果您需要调试帮助,您需要提供发生错误的代码的最小示例。否则我们无能为力。

标签: ruby-on-rails ruby migration


【解决方案1】:

查看错误的堆栈跟踪(显示错误后终端上的东西)

您应该会看到一个指向错误所在代码行的指针。它可能类似于x.id,其中 x 是 nil 值

【讨论】:

    【解决方案2】:

    我也遇到了这个问题。在这种情况下,上面的答案不是很有帮助,因为运行迁移的大部分内容都是在 Active Record 中进行元编程的。

    对我来说,问题在于我编写了这样的迁移:

    create_table :user_table do |t|
      t.id :reference_table_id
    end
    

    我通过将中间行更改为 t.integer 来修复它,因为 id 不是列类型。

    没有看到您的迁移,我不能确定这会解决您的问题,但它对我有用!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-11
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      相关资源
      最近更新 更多