0
でプロバイダを関連付けるとき、私はグーグルで新しいアカウントを作成すると、電子メールは私のユーザレコードに保存されます。ツイッターでユーザーを作成すると、電子メールの列は空白になります。ユーザーが現在のTwitterアカウントとgoogleを関連付けると、そのエントリを更新したいと思います。ユーザレコードを更新するomniauth
def self.create_from_hash!(hash) create! do |user| user.name = hash['user_info']['name'] user.email = hash['user_info']['email'] end end
セッション制御装置において:
def create auth = request.env['rack.auth'] unless @auth = Authorization.find_from_hash(auth) @auth = Authorization.create_from_hash(auth, current_user) end self.current_user = @auth.user flash[:notice] = "Welcome, #{current_user.name}." redirect_to '/' end
および認可モデルで:私のUserモデルで
私はその列を更新するにはどうすればよい
def self.create_from_hash(hash, user = nil) user ||= User.create_from_hash!(hash) Authorization.create(:user => user, :uid => hash['uid'], :provider => hash['provider']) end
私は追加してい承認方法?
を?チェック、なぜあなたは@ user.email.nilをしていますか? –
@Ivailo Bardarovは - nilかどうかを確認するために、明示的に必要があった場合、私は正確に覚えていませんが、私はいくつかのプロバイダ、および複数のメソッドを持っていると私は、@ user.emailがnil – aperture
空白返される例があったことを信じますか? nilをチェックしますか? –