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

时间:2014-12-11 00:15:23

标签: ruby-on-rails

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

@user.update_attributes(user_params)

其中user_params是强参数的方法

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

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

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

1 个答案:

答案 0 :(得分:1)

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

我喜欢的另一种方法是来自devise的方法,通过使用名为password_required?的方法,它们可以处理多种自定义验证,并在您需要覆盖的情况下为您提供全面控制,但这是只是额外的。