2012-02-02 93 views
1

在我的应用我有唱歌了用户的方式有两种:有条件的密码验证Rails中

  1. 注册形式
  2. Facebook连接

在我们存储信息到数据库中左右逢源,但只是在第一个想要我们想要存储密码。

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

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

回答

1

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

也许你可以有两个模型User::Normal < UserUser::Facebook < User。大部分逻辑进入用户,并且具体到自定义模型。

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

+0

marcgg我认为第二种方法是我正在寻找,但到底是什么not_facebook?何时/应该在哪里设置? – Nobita 2012-02-02 17:27:09

3

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

这正是Devise documentation推荐的。

+0

我认为downvote没有评论应该是反投票... +1 – 2012-05-09 01:36:26

+0

@EranMedan:谢谢,男人:) – 2012-05-09 01:41:50