3

具体来说,我将 Devise 与 Typus 一起使用。但是,我认为我的误解在于我对 Devise 的了解。

我正在尝试实现当您想通过表单更改重要模型时的功能,您必须提供当前密码以确认您可以更改它,例如谷歌。

现在,我可以登录并更改我的用户模型的任何字段。包括密码,无需事先确认我的密码。不好。因此,我在表单中添加了 current_password。但这并没有做任何事情。然后我尝试验证 current_password 上的存在。然后它似乎不接受任何价值。

谷歌没有帮助我。所有相关帖子都是关于删除 current_password 而不是确认它。这让我觉得我误解了 current_password 的使用。

有人愿意分享一些见解吗?谢谢。

4

2 回答 2

6

您应该将密码字段添加到表单中,然后在控制器的操作中,您可以使用以下方法验证密码:

user.valid_password?(params[:user][:password])

请注意,您可能应该将 params[:user][:password] 更改为表单中密码字段的参数名称(可能只是 params[:password])。

希望能帮助到你。

于 2011-09-02T09:07:30.903 回答
5

实际上,devise 有一个内置方法:

user.update_with_password(params, *options)你可以在这里阅读 rdoc 。

当 :current_password 匹配时更新记录属性,否则在 :current_password 上返回错误。如果 :password 和 :password_confirmation 为空,它也会自动拒绝它们。

于 2012-03-31T00:05:00.810 回答