使用 form_for 和空白密码字段更新用户设置的 Rails



我正在按照Hartl的Rails教程创建编辑用户页面。这是我在更新方法中的更新方式:

@user.update_attributes(user_params)

其中user_params是强参数的方法

在用户模型中,我还包含以下行:

validates :password, length: { minimum: 6 }, allow_blank: true

现在,当我编辑用户名/电子邮件并提交带有空白密码字段的表单时,用户已成功更新(密码保持不变,而不是更改为空白密码)。这就是我想要的。但为什么会这样呢?form_for方法有什么特别之处吗?如果我使用 rails 控制台并尝试使用 update_attributes 方法和空白密码更新用户,则对象无法保存。

这是因为allow_blank选项,在这种情况下,如果密码为空白或为零,Rails 将忽略密码。

我喜欢的另一种方法是设计的方法,通过使用一种称为password_required?的方法,他们可以处理多种自定义验证,并在您需要覆盖时为您提供完全控制权,但这只是额外的。

最新更新