我有一个奇怪的关系,需要为遗留流程维护。
我试图弄清楚如何在给定新模型关联的情况下创建关系。
新关系设置
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