Rails密码仅在某些情况下验证

时间:2011-05-24 22:09:05

标签: ruby-on-rails login validation

在我的rails 3应用程序中,我有一个用户注册表单。我需要并验证用于注册的密码,但是,如果用户使用omniauth连接,我无法检索他们的密码,这会将我带到我的问题中。如何才能使密码字段在某些情况下无法验证?

我知道我可以执行user.save(:validate => false),但这会取消所有验证。

P.S。我看过railscasts第235集&但是,Ryan Bates是用Devise做的,我用自己的登录系统来做。

2 个答案:

答案 0 :(得分:1)

您可以编写自己的密码验证,并检查用户是否使用了oauth 请检查此方法:validate(*args, &block)

答案 1 :(得分:1)

您可以在模型中为验证添加条件:

validates_presence_of :password, :unless => :account_from_omniauth?

假设您还定义了方法

def account_from_omniauth?
  true if //...your conditions
  false
end