0

Twitter と Facebook を使用して Web サイトに接続しています。プロバイダーが facebook の場合、Twitter にメールがない場合に、ユーザーのメールをデータベース フィールドに追加したいと考えています。以下のコードは、サーバーをタイムアウトさせ続けます。

 def self.from_omniauth(auth)
    where(provider: auth['provider'], uid: auth['uid']).first_or_create do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.profile_data = auth.info
      user.email = auth.info.email unless user.email.nil?

      user.token = auth['credentials']['token'] unless auth['credentials'].nil?
      user.secret = auth['credentials']['secret'] unless auth['credentials'].nil?
    end
  end

私も試してみました

def self.from_omniauth(auth)
    where(provider: auth['provider'], uid: auth['uid']).first_or_create do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.profile_data = auth.info
      user.email = auth.info.email unless auth.info.email?

      user.token = auth['credentials']['token'] unless auth['credentials'].nil?
      user.secret = auth['credentials']['secret'] unless auth['credentials'].nil?
    end
  end

heroku のエラー:

2012-08-21T23:30:07+00:00 heroku[router]: Error H12 (Request timeout) -> GET www.myapp.com/ dyno=web.1 queue= wait= service=30000ms status=503 bytes=0
4

1 に答える 1

1

これを試して:

user.email = auth.info.email unless auth.info.email.blank?

これにより、nil値と空の値の認証ハッシュがチェックされます。

于 2012-08-21T13:20:26.617 に答える