2011-05-11 2 views
0

내 사용자 모델에는 인스턴스 모델과 관련된 instance_id가 있습니다. 이메일이 [email protected] 경우레일 - 레코드가 업데이트 될 때마다 메소드를 실행하는 방법

User: 
id, email, instance_id 

Instance: 
id, domain 

은 그렇게 그의 instance_id (5, yahoo.com)는 예를 표에서와 같이, 5입니다.

사용자 레코드가 업데이트 될 때마다 이메일이 올바른 도메인과 일치하는지 확인하고 싶습니다. 그래서 다음과 같습니다 :

after_save :assign_user_to_instance 

def assign_user_to_instance 
    domain = email.split("@").last 
    user_instance = Instance.find_or_create_by_domain domain 
    update_attribute(:instance_id, user_instance.id) 
end 

문제가 이것이 실행되면 문제는 DB 업데이트에 대한 미친듯한 루프를 반복하며 끝나지 않습니다. 이것을 달성하는 올바른 방법은 무엇입니까?

감사

답변

3

는 'before_save'대신에 'after_save'를 사용해보십시오.

관련 문제