部署到Heroku时,Rails 3.2 has_secure_password以静默方式失败

时间:2012-01-27 21:53:17

标签: ruby-on-rails ruby ruby-on-rails-3 heroku

我在我的应用程序中升级了身份验证,以使用Rails 3.1的has_secure_password工具。在此过程中,我创建了一个页面,允许用户更改其密码。我测试了它,它可以在我的开发机器上工作,无论是在开发环境还是生产环境中。

当我将应用程序部署到Heroku时,我去尝试它似乎工作,除非我退出并重新登录,我的密码没有改变。我尝试在控制台中手动更改密码,并且工作正常。如果我尝试为密码和确认输入不同的文本,它会显示它应该进行的验证,这意味着密码将正确地发送到应用程序。

以下是我的控制器的相关更改:https://github.com/mjm/sis-lunch/commit/930ced467a0e23ad48f4497999183112c5f846b1#diff-2

有什么我想念的吗?在Heroku的生产中可能会导致这种情况无声地失败会出现什么问题?

2 个答案:

答案 0 :(得分:0)

我不确定您是如何在开发计算机上测试它的,因为PeopleControllerTest为空,但密码字段受到保护以防止批量分配。 不应该按照它的编写方式在PeopleController中工作。 (这是件好事!)

您需要在控制器中明确调用 Person#password =

ActiveModel::SecurePassword的相关Rails源代码可以准确显示使用has_secure_password时会发生什么。

答案 1 :(得分:0)

我相信我明白了。我将应用程序部署到Heroku,然后运行迁移。该应用程序并不完全了解新的password_digest列,但新的控制台是,所以他们工作正常。使用heroku restart重新启动应用修复了该应用。