问题很简单,即使我不想更新某些属性,update_attributes 是否会验证模型的所有可能验证?
我有一个编辑视图,用户可以在其中更改他的密码,但前提是他通过了它,即,如果它是空白的,则密码不会改变。
所以我在控制器中执行以下操作:
def update
params[resource_name].delete(:password) if params[resource_name][:password].blank?
params[resource_name].delete(:password_confirmation) if params[resource_name][:password_confirmation].blank?
params[resource_name].delete(:current_password) if params[resource_name][:current_password].blank?
if resource.update_attributes(params[resource_name])
...
end
end
我在模型上定义了以下验证:
validates :password,
:length => { :within => 6..40 }
因此,每当我使用调用更新时,我都会收到一条错误消息,提示密码太短
Ps.:我正在使用设计来处理它。
编辑:你们中有人知道 Devise 是否已经对密码进行了任何验证吗?原因,我删除了验证,它以正确的方式工作,但如果我输入一个短密码,它仍然显示验证,说它太短了。