2011-01-29 6 views
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 

私は追加してい承認方法?

答えて

0

私は私のsessionscontrollerに次の行を追加して、問題を解決すると思われるアクション、作成します。唯一のuser.email.blank @行うのに十分である

​​
+0

を?チェック、なぜあなたは@ user.email.nilをしていますか? –

+0

@Ivailo Bardarovは - nilかどうかを確認するために、明示的に必要があった場合、私は正確に覚えていませんが、私はいくつかのプロバイダ、および複数のメソッドを持っていると私は、@ user.emailがnil – aperture

+0

空白返される例があったことを信じますか? nilをチェックしますか? –

関連する問題