查找具有相同值的记录并将其设置为nil

时间:2014-11-21 11:45:39

标签: ruby-on-rails ruby ruby-on-rails-3

我试图将avatar_id设置为nil,在记录中它与我当前的记录self.avatar_id相同,并且它的类型相同。

class AvatarPart < ActiveRecord::Base
  before_save :clear_avatar_body

  def clear_avatar_body
    used = AvatarPart.where(ap_type: self.ap_type, avatar_id: self.avatar_id).first
    if used
      used.avatar_id = nil
      used.save
    end
  end
end

rails console中的类似解决方案工作正常。但是在模型中它没有做任何事情,或者我的类似之一。每个解决方案都以无限循环结束。 我应该把它移到控制器吗?

1 个答案:

答案 0 :(得分:3)

您是否尝试过使用update_all。像这样的东西

AvatarPart.where(ap_type: self.ap_type, avatar_id: self.avatar_id).update_all(avatar_id: nil)