在我的应用程序中,我有两种方式来表达用户:
我们在两种方式中都将信息存储到数据库中,但首先我们希望存储密码。
我有一些与密码相关的验证,我想为第一种用户注册方式执行,但我不希望它发生在第二种方式。在Rails中这样做的适当和安全的方法是什么?
我的第一种方法是为名为password_optional
的用户对象创建一个属性,并在验证中使用该属性,但我不确定如何将该属性默认设置为false或将其设置为当用户使用表单注册时为false。
答案 0 :(得分:3)
如果您在用户通过Facebook注册时没有密码,但验证需要密码,请将其设置为随机字符串。
这正是Devise documentation中推荐的内容。
答案 1 :(得分:1)
不需要时跳过验证。有多种方法可以做到这一点
也许您可以拥有两个模型User::Normal < User
和User::Facebook < User
。大多数逻辑都进入了用户,并且特定性进入了自定义模型。
也许你可以去validates_presence_of :password, :if => not_facebook?
或类似的东西。