has_secure_password打破不相关的属性验证

时间:2015-09-17 15:12:19

标签: facebook ruby-on-rails-3 validation

我的问题与this one非常相似。我最近将has_secure_password添加到了我的用户模型中。一切都很好,除非我尝试从Facebook创建一个具有:friends属性的用户。在这种情况下,当我尝试@user.save!

时出现此错误
> Validation failed: Friends is invalid

在我添加has_secure_password之前,FB用户创建工作正常,并且在使用@user.save(validate: false)保存用户时仍然有效

用户已经创建并出现在数据库中后,@user.save!方法正常运行,并且:朋友已经过验证。

我的用户模型中也有validates :password, length:{minimum:8}, on: :create,但即使我删除此行,仍会触发好友验证。

当我尝试从FB创建用户时,我可以在我的控制器中添加has_facebook?条件以完全跳过任何类型的验证,但我真的想要理解为什么has_secure_password验证是针对看似无关的东西触发的。< / p>

1 个答案:

答案 0 :(得分:0)

验证消息听起来很奇怪。 但是在您看到的文档中,has_secure_validation会在创建时在密码上添加状态验证。所以我认为你以某种方式覆盖了验证信息。

要说一些更具体的内容,我需要查看更多代码。

所以文档sais:

  

为了进一步定制,可以通过传递验证来抑制默认验证:false作为参数。

http://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html

我认为,您将验证设置为false并关心它们。因此,如果不是Facebook注册,您只需要密码。