我的问题与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>
答案 0 :(得分:0)
验证消息听起来很奇怪。 但是在您看到的文档中,has_secure_validation会在创建时在密码上添加状态验证。所以我认为你以某种方式覆盖了验证信息。
要说一些更具体的内容,我需要查看更多代码。
所以文档sais:
为了进一步定制,可以通过传递验证来抑制默认验证:false作为参数。
http://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html
我认为,您将验证设置为false并关心它们。因此,如果不是Facebook注册,您只需要密码。