Cześć,
Przenoszę dane ze starego systemu i widzę, że jest bajzel z redundancją.
Muszę w aplikacji zrobić funkcję “scalania” polegającą na tym, że jeden z rekordów “rodzica” jest usuwany, gdyż dane są powielone
np.
Kowalski Jan, Warszawa, Krakowskie Przedmieście 48/50 (ID= 1001)
Kowalski Jan, Warszawa, Krakowskie Przedmieście 48/50 (ID= 1002)
“Scalenie” ma polegać na tym, że jeden z rekordów zostanie usunięty, a dokumenty z nim skojarzone zostaną przypisane do drugiego.
Czyli przykładowo
customer_a = Customer.find(1001)
customer_b = Customer.find(1002)
customer_a.documents ->
id=222222, name=“Document 1”, …, customer_id=1001
id=222223, name=“Document 2”, …, customer_id=1001
id=222224, name=“Document 3”, …, customer_id=1001
customer_b.documents ->
id=222226, name=“Document 11”, …, customer_id=1002
id=222227, name=“Document 12”, …, customer_id=1002
W efekcie końcowym ma być:
customer_a = Customer.find(1001) -> nil - usunięty rekord
customer_b = Customer.find(1002) -> Kowalski Jan, Warszawa, Krakowskie Przedmieście 48/50 (ID= 1002)
customer_b.documents ->
id=222222, name=“Document 1”, …, customer_id=1002
id=222223, name=“Document 2”, …, customer_id=1002
id=222224, name=“Document 3”, …, customer_id=1002
id=222226, name=“Document 11”, …, customer_id=1002
id=222227, name=“Document 12”, …, customer_id=1002
Moje pytanie jest następujące:
Czy istnieje jakaś bardziej wyrafinowana technika niż iteracja po rekordach i zmienianie “ręczne” customer_id ? :
customer_a.documents.each do |doc|
doc.customer_id = customer_b.id
doc.save!
end