【问题标题】:Rails app works fine on local machine but 500 error occurs on herokuRails 应用程序在本地机器上运行良好,但在 heroku 上出现 500 错误
【发布时间】:2017-05-16 17:09:22
【问题描述】:

我在 Heroku 上部署了我的 rails 应用程序,它运行良好。我在用户表中有一个“名称”列。然后,在本地机器上,我将“名称”列重命名为“用户名”。它在我的机器上仍然可以正常工作。

以前,我的视图文件中的代码是:-

<%= @user.name %>

然后,我将其更改为:-

<%= @user.username %>

我再次将更改推送到 heroku,但应用遇到 500 错误。当我运行 heroku 日志时,出现以下错误。

ActionView::Template::Error (undefined method `username' for #<User:0x007fac4558c1b0>)

如何解决此错误?

提前致谢!

更新 1:-

用户模型中的代码是:-

class User < ActiveRecord::Base
 #some codes
 #..........
    validates :username, presence: true, length: { maximum: 50 }, 
      uniqueness: { case_sensitive: false }
    has_secure_password
    validates :password, presence: true, length: { minimum: 6 }
#.......
#some codes
end

【问题讨论】:

  • 你刷新heroku端的数据库了吗?模型期望什么?
  • 否。怎么办?
  • 您是通过 rake 迁移还是以其他方式更改架构?您要么需要在 heroku 上运行相同的迁移,要么推送新的数据库。
  • 我生成了迁移文件并重命名了该列。然后,我在推送到 heroku 后运行 Heroku run rake db:migrate。现在,我该怎么办?请帮忙。
  • 我也相应地更改了模型。

标签: ruby-on-rails heroku


【解决方案1】:

如果您 100% 确定更新了列名,请尝试执行 heroku restart 以重新启动服务器。我注意到有时这是必需的,即使它不应该是。

如果这不起作用,您可以在此处粘贴您的表格模型吗?

【讨论】:

  • 不,Heroku 重启也不起作用。我在编辑中包含了用户模型。请帮忙!
  • heroku run console - 从那里查看User.first,看看您是否在用户身上看到username 属性。
  • 非常感谢!下次会试试。不幸的是,我已经破坏了生产数据库。 :(