Ruby on rails Rails 3.2在部署到Heroku时,密码会自动失效

Ruby on rails Rails 3.2在部署到Heroku时,密码会自动失效,ruby-on-rails,ruby,ruby-on-rails-3,heroku,Ruby On Rails,Ruby,Ruby On Rails 3,Heroku,我将应用程序中的身份验证升级为使用Rails 3.1的has_secure_密码功能。在此过程中,我创建了一个页面,允许用户更改密码。我在开发环境和生产环境中对它进行了测试,并在我的开发机器上运行 当我将应用程序部署到Heroku时,我尝试了一下,它似乎可以工作,但当我注销并重新登录时,我的密码没有改变。我尝试在控制台中手动更改密码,效果很好。如果我尝试为密码和确认输入不同的文本,它将显示它应该进行的验证,这意味着密码被正确发送到应用程序 以下是对我的控制器的相关更改: 有什么我遗漏的吗?在He

我将应用程序中的身份验证升级为使用Rails 3.1的has_secure_密码功能。在此过程中,我创建了一个页面,允许用户更改密码。我在开发环境和生产环境中对它进行了测试,并在我的开发机器上运行

当我将应用程序部署到Heroku时,我尝试了一下,它似乎可以工作,但当我注销并重新登录时,我的密码没有改变。我尝试在控制台中手动更改密码,效果很好。如果我尝试为密码和确认输入不同的文本,它将显示它应该进行的验证,这意味着密码被正确发送到应用程序

以下是对我的控制器的相关更改:


有什么我遗漏的吗?在Heroku上的生产中,它有什么问题可能会导致它自动失败?

我不确定您是如何在开发机器上测试它的,因为PeopleControllerTest是空的,但是密码字段是防止大规模分配的。它不应该在PeopleController中以其编写的方式工作。那是件好事

您需要在控制器中显式调用Personpassword=


的相关Rails源代码可以准确地向您显示当您使用has\u secure\u password时会发生什么情况。

我相信我已经找到了答案。我将应用程序部署到Heroku,然后运行迁移。该应用程序并没有完全意识到新的密码摘要栏,但新的控制台是这样的,所以它们工作得很好。使用heroku restart重新启动应用程序修复了它。

你确定吗?这段代码只保护password_digest,而不是password,我可以登录到生产控制台并通过attributes=分配这些属性。啊,不,你说得对。我之前比较笔记时忽略了可访问的属性。回到绘图板…我回答了我自己的问题,事实上,我只是在完成迁移后重新启动了应用程序。