Rails中的条件密码验证

时间:2012-02-02 16:20:38

标签: ruby-on-rails validation passwords

在我的应用程序中,我有两种方式来表达用户:

  1. 注册表格
  2. Facebook Connect
  3. 我们在两种方式中都将信息存储到数据库中,但首先我们希望存储密码。

    我有一些与密码相关的验证,我想为第一种用户注册方式执行,但我不希望它发生在第二种方式。在Rails中这样做的适当和安全的方法是什么?

    我的第一种方法是为名为password_optional的用户对象创建一个属性,并在验证中使用该属性,但我不确定如何将该属性默认设置为false或将其设置为当用户使用表单注册时为false。

2 个答案:

答案 0 :(得分:3)

如果您在用户通过Facebook注册时没有密码,但验证需要密码,请将其设置为随机字符串。

这正是Devise documentation中推荐的内容。

答案 1 :(得分:1)

不需要时跳过验证。有多种方法可以做到这一点

也许您可以拥有两个模型User::Normal < UserUser::Facebook < User。大多数逻辑都进入了用户,并且特定性进入了自定义模型。

也许你可以去validates_presence_of :password, :if => not_facebook?或类似的东西。