2011-05-11 46 views
0

我的應用程序中,我的用戶模型具有與實例模型相關的instance_id。Rails - 如何在任何時候更新記錄時運行方法

User: 
id, email, instance_id 

Instance: 
id, domain 

所以如果電子郵件是[email protected],他的instance_id是5,因爲(5,yahoo.com)在實例表中。

我想要做的是,每次更新用戶記錄時,請檢查以確保電子郵件與正確的域匹配。所以,我有以下幾點:

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 

問題是,當這個運行時,它會在更新到數據庫的一個瘋狂的循環,永遠不會結束。什麼是實現這個目標的正確途徑?

謝謝

回答

3

嘗試使用'before_save'而不是'after_save'。