密码摘要方法在localhost上运行但不是Heroku吗? (Hartl RubyOnRails教程第7章)

时间:2012-04-10 20:26:55

标签: ruby-on-rails heroku railstutorial.org

我一直在研究Hartl优秀的RoR(3.2)教程(以及整个部署到Heroku),并且为什么Heroku版本不再反映本地托管应用程序的行为而感到困惑。

我在7.4.4节末尾:http://ruby.railstutorial.org/chapters/sign-up?version=3.2#top

我的本​​地托管应用程序通过了所有测试,并且能够在用户/电子邮件/密码输入不正确或超出规范时创建新用户并提供相应的错误消息。在应用程序的Heroku部署中,我没有成功创建用户也没有更正错误页面,因为该版本中的密码摘要功能似乎有问题。我被带到一个通用的Heroku“我们很抱歉,但出了点问题”页面。

“heroku logs”命令给了我:

Started POST "/users" for 97.81.107.108 at 2012-04-10 19:41:17 +0000 2012-04-10T19:41:17+00:00 app[web.1]: Processing by UsersController#create as HTML 2012-04-10T19:41:17+00:00 app[web.1]: Parameters: {"utf8"=>"✓", "authenticity_token"=>"0jnDCpFnVq9fd/v1lgLNB7g0wHuXGi5bocTD3SINRzc=", "user"=>{"name"=>"helloq", "email"=>"this@this.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Create my account"} 2012-04-10T19:41:17+00:00 app[web.1]: 2012-04-10T19:41:17+00:00 app[web.1]: app/controllers/users_controller.rb:12:in创建” 2012-04-10T19:41:17 + 00:00 app [web.1]: 2012-04-10T19:41:17 + 00:00 app [web.1]:NoMethodError(未定义方法password_digest=' for #<User:0x0000000229e9e0>): 2012-04-10T19:41:17+00:00 app[web.1]: 2012-04-10T19:41:17+00:00 heroku[router]: POST simple-sword-1851.herokuapp.com/users dyno=web.1 queue=0 wait=0ms service=128ms status=500 bytes=643 2012-04-10T19:41:17+00:00 app[web.1]: Completed 500 Internal Server Error in 104ms 2012-04-10T19:41:17+00:00 app[web.1]: app/controllers/users_controller.rb:12:in new'

当password_digest方法在本地部署上正常运行时,为什么会出现NoMethodError?我用git检查过我的本地版本和远程heroku版本是一样的,我确保迁移数据库并重新启动应用程序。

感谢您的任何建议!

1 个答案:

答案 0 :(得分:2)

我正在完成本教程,并且已经完成了。我想跟进马蒂亚斯的评论。看看第7章,他并没有告诉你如何在Heroku上重置数据库。如果要完全清除数据库并重新运行迁移,请执行以下操作:

heroku pg:reset SHARED_DATABASE --confirm simple-sword-1851
heroku run rake db:migrate

当我在迁移过程中弄乱了某些东西时偶尔会遇到一些问题。