Rails密码仅在特定情况下验证



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

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

附言:我看了railscasts第235集;236,然而Ryan Bates用Devise来做,我用自己的登录系统来做。

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

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

validates_presence_of :password, :unless => :account_from_omniauth?

假设您还定义了方法

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

最新更新