在我的应用程序中,我的用户模型有一个与实例模型相关的instance_id。
User:
id, email, instance_id
Instance:
id, domain
因此,如果电子邮件 bob@yahoo.com,则他的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
问题是当它运行时,它会进入数据库更新的疯狂循环,并且永远不会结束。实现这一目标的正确方法是什么?
谢谢
尝试使用"before_save"而不是"after_save"。