2

我有一个奇怪的关系,需要为遗留流程维护。

我试图弄清楚如何在给定新模型关联的情况下创建关系。

新关系设置

Machine
  has_many MachineReadings
  has_many Disks
    has_many DiskReadings

旧关系设置

Machine
  has_many MachineReadings
    has_many DiskReadings
  has_many Disks

问题是数据将作为嵌套属性使用新的关系设置进入机器模型。我需要更新 DiskReading 模型中的 machine_reading_id 以便可以继续使用旧的关联。

我尝试通过 after_save 钩子执行此操作,该钩子将遍历回机器,然后向下遍历读数以获取 machine_reading.id,以便我可以填充 DiskReading 模型。但是,关联并没有按照我期望的顺序保存。他们在保存 MachineReadings 之前保存了 Disks & DiskReadings。因此,当我查找 machine_reading.id 时,它还没有被写入,因此我无法访问它。

例如:

#machine_disk_reading.rb
after_save :build_old_relationship

def build_old_relationship
  self.machine_reading_id = self.disk.machine.readings.find_by_date_time(self.date_time).id
end
4

1 回答 1

1

没有办法做到这一点。必须手动完成。

于 2012-11-12T22:57:23.453 回答