我有一个Request模型,它有一个requestedteeID字段。当我在本地计算机上运行该站点时,我可以运行以下代码:
a = Request.find_all_by_requesteeID(current_user.id)
并且它工作正常(注意:我不能执行current_user.requests,因为模型由另一个字段,requesterID连接)。但是当我在Heroku上运行时,它会崩溃,并出现以下错误:
NoMethodError (undefined method `find_all_by_requesteeID' for #<Class:0x2ae0d29606d0>):
我运行了heroku db:push,因此数据库是最新的。在Heroku上可能导致此错误的原因是什么?谢谢你的阅读。
答案 0 :(得分:4)
如果这是一个新的数据库列,即使您使用db:push或db:migrate,也可能需要为Rails发出heroku restart,以实现新的数据库列。
在本地转到您的应用程序并执行:
heroku restart
这将重新启动您的应用程序服务器并重新加载所有内容。
答案 1 :(得分:2)
我使用heroku的提示 -
确保您在本地主机上运行瘦 - 在某些情况下代码可以在webrick中运行但不是很薄
尝试在localhost上设置生产环境并在其中运行代码 - 某些代码将在开发模式下运行,但无论托管提供商如何,都将在生产环境中失败 - 如果您运行生产环境你的本地主机,你可能会发现这个错误
rake db:push并不像其他人建议的那样做得足够 - 我经常发现自己运行heroku rake db:drop然后是heroku rake db:migrate或heroku rake db:seed现在我已经停止使用了active_record - 只需尝试完全挖掘你的数据库并从头开始重新创建 - 提示,这个提示是一个不得已的花絮
几天前我在一个应用程序中安装了mongoid-slug gem并且它在开发中工作得很好但是当我推向生产时它开始引起各种问题 - 这个错误是由于这个问题引起的我没有在我的Gemfile中指定一个gem版本,所以heroku正在安装一个稍微更新的版本 - 总是指定在开发机器上运行的确切版本 - 我将从现在开始这样做
两种环境中相同版本的红宝石
希望你能解决它 - 尝试的主要方法是在你的开发机器上设置一个生产环境,你可能会发现代码在那里失败,就像在heroku上一样