在设计 2.0 上跳过 omniauth-twitter 的电子邮件验证 [英] Skip email validation for omniauth-twitter on devise 2.0

查看:22
本文介绍了在设计 2.0 上跳过 omniauth-twitter 的电子邮件验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用设计 2.0 和 gem omniauth-twitter

I'm using devise 2.0 and gem omniauth-twitter

问题是 twitter 没有发送电子邮件作为响应,所以我的应用程序的模型用户验证了有电子邮件,我在回调中收到以下错误:

The problem is that twitter does not send an email in response, so the model user of my application validates that there is an email and I get the following error in the callback:

Email can't be blank

我的 user.rb 模型中有这个:

I have this in my user.rb model:

#config omniauth twitter
def self.find_for_twitter_oauth(access_token, signed_in_resource = nil)
    data = access_token.extra.raw_info
    if user = User.where(:username => data.screen_name).first
        user
    else
        User.create!(:username => data.screen_name, :password => Devise.friendly_token)
    end
end

我的omniauth_callbacks_controller.rb

  def twitter
    @user = User.find_for_twitter_oauth(request.env["omniauth.auth"], current_user)
    if @user.persisted?
      flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Twitter"
      sign_in_and_redirect @user, :event => :authentication
    else
      # http://stackoverflow.com/questions/7117200/devise-for-twitter-cookie-overflow-error
      session["devise.twitter_data"] = request.env["omniauth.auth"].except('extra')
      redirect_to new_user_registration_url
    end
   end

我想强制用户提供电子邮件地址以发送简报、广告商...等

I want force to user to give a email address for send newsletter, advertirser...etc

我该如何解决这个问题?

谢谢!

推荐答案

将此添加到您的用户模型:

Add this to your User model:

def email_required?
  super && provider.blank?
end

您可以对密码使用等效的方法:

You can use an equivalent method for the password:

def password_required?
  super && provider.blank?
end

在使用 Omniauth 提供商时,这应该覆盖字段要求.

This should override the field requirements when using Omniauth providers.

这篇关于在设计 2.0 上跳过 omniauth-twitter 的电子邮件验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆