after_save作用于关联导致致命:异常重新进入

时间:2017-03-05 21:09:09

标签: ruby-on-rails

我有一个属于用户模型的个人资料模型,用户有一个个人资料。当我更新配置文件时,我想更新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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我假设您的用户模型中有ActiveRecord回调尝试更新您的个人资料模型记录。所以你很可能会进入永无止境的循环。

尝试使用不调用回调的方法更新用户模型。在这种情况下,update_column是可能的。

user.update_column(:name, name ) unless user.name == name