Rails ActiveRecord - 如何设置关联保存顺序

时间:2012-08-07 16:08:24

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

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

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

新关系设置

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

1 个答案:

答案 0 :(得分:0)

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

相关问题