【问题标题】:Active Record model's "primary_key" class method returns nil after ruby 2.0 upgraderuby 2.0 升级后 Active Record 模型的“primary_key”类方法返回 nil
【发布时间】:2013-06-26 19:09:12
【问题描述】:

刚刚将 Rails 项目从 ruby-1.9.3-p392 升级到 ruby-2.0.0-p0。在本地一切正常,但是当我推送到 heroku 上的登台服务器时。 friendly_id gem 崩溃了

nil is not a symbol

vendor/bundle/ruby/2.0.0/gems/friendly_id-4.0.9/lib/friendly_id/slug_generator.rb:56:in `conflicts'

显然 User 模型没有 primary_key 类属性

User.primary_key
> nil  

它应该返回“id”并在 ruby​​ 2.0 的本地开发环境和 1.9.3 的生产环境中正常工作。

rails 版本是3.2.13

以前有人遇到过这种情况吗?不确定是什么原因造成的。新的数据库还原似乎无法解决它。

【问题讨论】:

  • 闻起来像时间问题,但这只是一个疯狂的猜测。如果在检查 User.primary_key 之前实例化用户会发生什么?
  • 我正在从控制台检查 User.primary_key。实例化一个实例似乎没有任何效果。
  • User.columns 是否产生预期的输出?
  • #<:connectionadapters::postgresqlcolumn:0x007f36cf87b588> primary 为 false,在本地环境中为 true
  • 可以不通过Rails直接查看数据库架构吗?也许在你背后发生了一些变化,整个 Ruby 2.0 部分是一条红鲱鱼。

标签: ruby-on-rails ruby ruby-2.0


【解决方案1】:

事实证明,评论者是正确的,Ruby 2.0 确实是一条红鲱鱼。

不知何故,暂存模式搞砸了,执行heroku pg_backups:restore 不足以修复它。这是因为它只恢复数据。

执行heroku pg:reset 然后进行另一次还原是最终修复它的方法。

【讨论】:

    猜你喜欢
    • 2013-02-22
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    相关资源
    最近更新 更多