2011-01-29 57 views
0

當我通過google創建新帳戶時,電子郵件會存儲在我的用戶記錄中。當我通過twitter創建用戶時,電子郵件列是空白的。如果用戶將其當前的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 

,並在授權模式:

在我的用戶模型

 
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創建行動,這似乎解決了這個問題:

​​
+0

這足以只做@ user.email.blank?檢查,你爲什麼要做@ user.email.nil? – 2011-05-28 11:45:03

相關問題