나는 레거시 프로세스에 대해 유지해야하는 이상한 관계가 있습니다.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
모델을 특정 순서로 저장하려면 수동으로 유효성을 검사 할 수 없으며 원하는 순서대로 각 모델을 저장하지 않았습니까? – Ben