如果任何重要字段已更改,请设计,验证current_password

fus*_*lot 3 ruby-on-rails devise typus

具体来说,我正在使用Devise与Typus.但是,我认为我的误解在于我对Devise的了解.

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

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

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

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

jäv*_*ävi 6

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

user.valid_password?(params[:user][:password])
Run Code Online (Sandbox Code Playgroud)

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

希望能帮助到你.


and*_*uby 5

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

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

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