Rails - 如何在更新记录时运行方法



在我的应用程序中,我的用户模型有一个与实例模型相关的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"。

相关内容

  • 没有找到相关文章

最新更新