Rails + Devise + OmniAuth:如何跳过Twitter的电子邮件验证?

时间:2013-01-27 17:32:17

标签: ruby-on-rails ruby validation twitter devise

  

可能重复:
  Skip email validation for omniauth-twitter on devise 2.0

我正在使用此验证规则来发送电子邮件:

  validates :email,
            :presence => true, 
            :format => { :with => VALID_EMAIL_REGEX }, 
            :uniqueness => {:case_sensitive => false }

  before_save do |user| 
        user.email = email.downcase#
        user.slug  = user.username.parameterize
  end

我尝试添加:

  def email_required?
    super && provider.blank?
  end

对于跳过电子邮件验证,如果访问者想要通过Twitter注册,但我仍然在此处收到错误,则表明email_required?无效。

我错过了什么?

谢谢

1 个答案:

答案 0 :(得分:0)

email_required如果您想跳过设计验证,那么可以工作,请参阅:https://github.com/plataformatec/devise/blob/c179cef365f7188c91cbbc3db924a9f1f9563c3c/lib/devise/models/validatable.rb#L29 但是,如果您想跳过自己的电子邮件验证,可以使用以下内容:

validates :email,
          :presence => true, 
          :format => { :with => VALID_EMAIL_REGEX }, 
          :uniqueness => {:case_sensitive => false },
          :if => 'provider.blank?'