我有一个带有密码属性的用户模型,该属性被保存为password_digest。 我想要做的是将编辑用户页面和编辑密码页面分开,以便 管理员无需在每次需要更改其他内容时输入密码。为此,我做了一个额外的行动/观点。
我的问题是,当我更新用户信息时,我会收到密码验证错误 我在表单中没有密码字段。这导致我得出结论:partial_updates不能使用密码属性(因为我已经在控制台中测试了它已启用,并且它是)
这是我做错了什么,还是应该以不同的方式处理?
答案 0 :(得分:0)
只有在密码被更改时才需要验证密码。如果没有更改,则应跳过password
字段的验证。
Railscasts.com episode #41向您展示了如何执行此操作。
答案 1 :(得分:0)
与@normalocity提到的railscasts方法类似,但不需要在控制器中设置伪属性,我们这样做(基本上取自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
伪属性,则表示密码正在已更改并且必须运行验证。因此,我们不需要像在railscasts剧集中那样设置updating_password
伪属性。