我正在关注Hartl的Rails教程,创建编辑用户页面。这是我在更新方法中更新的方式:
@user.update_attributes(user_params)
其中user_params是强参数的方法
在用户模型中,我还包括以下行:
validates :password, length: { minimum: 6 }, allow_blank: true
现在,当我编辑用户的姓名/电子邮件并提交包含空白密码字段的表单时,用户已成功更新(密码保持不变,而不是更改为空白密码)。这就是我要的。但为什么这样呢? form_for方法有什么特别之处吗?如果我使用rails console并尝试使用update_attributes方法和空密码更新用户,则该对象无法保存。
答案 0 :(得分:1)
由于allow_blank
选项,Rails在这种情况下会忽略密码,如果它是空白或为零。
我喜欢的另一种方法是来自devise的方法,通过使用名为password_required?
的方法,它们可以处理多种自定义验证,并在您需要覆盖的情况下为您提供全面控制,但这是只是额外的。