我有一个属于用户模型的个人资料模型,用户有一个个人资料。当我更新配置文件时,我想更新user.name字段。我的代码如下
Class Profile < ApplicationRecord
after_save :update_user
belongs_to :user
private
def update_user
user = self.user
return if user.nil?
name = "#{first_name} #{middle_name} #{family_name}"
user.update(name: name ) unless user.name == name
end
当触发此操作时,我会得到一个导致错误的无限循环
Failure/Error: user.update(name: name )
fatal:
exception reentered
我该如何解决这个问题?
答案 0 :(得分:1)
我假设您的用户模型中有ActiveRecord回调尝试更新您的个人资料模型记录。所以你很可能会进入永无止境的循环。
尝试使用不调用回调的方法更新用户模型。在这种情况下,update_column
是可能的。
user.update_column(:name, name ) unless user.name == name