Rails密码仅在某些情况下有效

问题描述

| 在我的Rails 3应用程序中,我有一个用户注册表单。我需要它并验证用于注册密码,但是,如果用户使用omniauth连接,则无法检索他们的密码,这使我想到了我的问题。我如何才能做到在某些情况下无法验证密码字段? 我知道我可以做user.save(:validate => false),但这可以完成所有验证。 附言我看了railscasts第235和236集,但是Ryan Bates用Devise做到了,而我用自己的登录系统来完成。     

解决方法

您可以通过检查用户是否使用oauth来编写自己的密码验证。 检查此方法:validate(* args,&block)     ,您可以在模型的验证中添加条件:
validates_presence_of :password,:unless => :account_from_omniauth?
假设您还定义了方法
def account_from_omniauth?
  true if //...your conditions
  false
end