0

사용자가 인증되고 생성 될 때 Twitter 또는 Facebook에서 수집 한 사용자 이름을 전달하려고 시도하지만 간단한 (description = user.username)이 보이지 않습니다. 그것을하기 위해, 여기 내가 지금까지 가지고있는 것이 있습니다.omniauth에서 사용자 이름을 스트라이프 고객에게 전달하는 방법

def self.create_from_omniauth(auth) 
create! do |user| 
    user.provider = auth["provider"] 
    user.uid = auth["uid"] 
    user.username = auth["info"]["nickname"] 
    #user.email = auth["info"]["email"] 
    user.save! 
    if user.save 
     Stripe::Customer.create(description = user.username) 
    end 
    user 
    end 
end 

@ user.username 또는 current_user.username을 사용해도 다음 오류가 계속 발생합니다.

undefined method `each' for "xhtmlit":String 

답변

0

나는 그것을 잘못하고있어서 오류가 날 뱉어 냈습니다. 실제 코드는 깨끗하지 않을 수도 있지만 현재는 더티 버전으로 시작하여 버전을 정리하려고 시도하고 있습니다. 지금까지 내가 가지고있는 것들이있다.

if user.save 
     Stripe::Customer.create(:email => user.username) 
end 
+0

아마도 'if' 블록 밖으로 이동하고 싶을 것입니다. 그것은 불필요하게 데이터베이스를 두 번 저장하는 것을 망칠 것입니다. 아무 것도하지 않습니다.'save! '가 실패하면 예외가 발생하고 절대 블록을 공격하지 않습니다. 'save! '가 성공하면 if는 항상 true로 평가됩니다. – colinm