我已经按照 Rails 教程进行操作,并且有一个可以工作的用户系统,但有一件事让我很恼火:保存用户时,即使只是在控制台中,我也必须关闭验证,因为如果没有保存密码和密码确认,它就不会保存,并设置为相同的东西。
这很痛苦,如果我向用户添加其他重要的验证,这似乎有潜在的危险。那么有什么好的方法来处理这个问题吗?真的,我希望仅当更新来自用户而不是我自己的代码时才应用验证。
所以用户模型有这个:
validates :password, length: { minimum: 6 }
has_secure_password # this does the hashing, comparisions, etc for us.
validates :password_confirmation, presence: true
这在创建用户时非常有用,并且在用户编辑他/她的个人资料时非常有用,因为它需要再次输入密码。但是,对于其他编辑,这很烦人。例如:
user = User.find_by_name("bob")
user.reputation = 200
user.save(validate: false) # I really don't want to have to care about password validations here.