2012-08-07 2 views
2

나는 레거시 프로세스에 대해 유지해야하는 이상한 관계가 있습니다.Rails 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를 얻기 위해 읽을 수 있도록 디스크 읽기 모델을 채울 수있었습니다. 그러나 협회는 내가 기대하는 순서대로 구원받지 못하고있다. 그들은 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

모델을 특정 순서로 저장하려면 수동으로 유효성을 검사 할 수 없으며 원하는 순서대로 각 모델을 저장하지 않았습니까? – Ben

답변

0

이 작업을 수행 할 수있는 방법이 없습니다. 수동으로 수행해야합니다.