เมื่อฉันสร้างบัญชีใหม่ผ่าน Google อีเมลจะถูกจัดเก็บไว้ในบันทึกผู้ใช้ของฉัน เมื่อฉันสร้างผู้ใช้ผ่าน Twitter คอลัมน์อีเมลจะว่างเปล่า ฉันต้องการอัปเดตรายการนั้นหากผู้ใช้เชื่อมโยงบัญชี Twitter ปัจจุบันกับ Google
ในรูปแบบผู้ใช้ของฉัน:
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
ฉันจะอัปเดตคอลัมน์นั้นได้อย่างไรเมื่อฉันเพิ่มวิธีการอนุญาต