我需要为遗留流程维护一个奇怪的关系。
我正试图弄清楚如何在给定新模型关联的情况下创建关系。
新关系设置
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之前的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
答案 0 :(得分:0)
没有办法做到这一点。必须手动完成。