我一直在学习 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 (undefined method 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 版本是否相同,并且我确保迁移数据库并重新启动应用程序。
感谢您的任何建议!