我有一个带有password属性的用户模型,它被保存为password_digest。我想要做的是将编辑用户页面和编辑密码页面分开,这样管理员就不需要在每次需要更改其他内容时输入密码。为此,我做了一个额外的动作/视图。
我的问题是,当我更新用户信息时,即使表单中没有密码字段,我也会收到密码验证错误。这导致我得出结论,partial_updates没有使用password属性(正如我已经在控制台中测试过的那样,它是启用的)
这是我做错了什么吗,还是我应该以不同的方式来处理?
发布于 2012-04-09 01:27:25
类似于@normalocity提到的铁路广播方法,但不需要在控制器中设置伪属性,我们这样做(本质上取自restful_authentication):
attr_accessor :password
validates :password,
:length => { :minimum => 8 },
:confirmation => true,
:presence => true,
:if => :password_required?
def password_required?
password_digest.blank? || !password.blank?
end基本上,我们假设如果尚未设置password_digest (对于新记录),或者如果已经设置了password伪属性,那么这意味着密码正在被更改,并且必须运行验证。因此,我们不需要像在铁路广播节目中那样设置updating_password伪属性。
发布于 2012-04-08 21:51:45
仅当密码被更改时,才需要验证密码。如果没有更改,则应该跳过对password字段的验证。
Railscasts.com episode #41向您展示了如何做到这一点。
https://stackoverflow.com/questions/10062045
复制相似问题