update_all似乎不适用于儿童

时间:2019-03-26 08:10:08

标签: ruby-on-rails activerecord

我有以下两种型号:

class Device < ApplicationRecord
  belongs_to :hardware_device
  ...

class HardwareDevice < ApplicationRecord
  has_many :devices
  ...

当我这样做时:

@hardware_device.devices.update_all(active: false)

链接到hardware_device的设备的活动状态保持为真。

但是如果我运行以下代码:

@hardware_device.devices.first.update(active: false)

它工作正常,并且将active设置为false。我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

找到了问题的原因。我有

  after_initialize :init

  def init
    self.active ||= true
  end

在设备模型中。将其更改为:

  def init
    if new_record?
      self.active ||= true
    end
  end

解决了问题。