Próbuję napisać własną metodę znaczników czasu, która zostanie uruchomiona podczas migracji. Ten, który jest na miejscu, dodaje teraz ograniczenie NOT_NULL na polu i naprawdę tego nie chcę.Railsy/Ruby Jak przesłonić znaczniki czasu metody migracji
Problem polega na tym, że mam bazę danych z wieloma schematami. Gdzie każdy główny klient otrzymuje swój własny schemat. Kiedy wchodzimy na nowego klienta, tworzymy nowy rekord dzierżawy, a następnie uruchamiamy migrację dla nowo wygenerowanego schematu.
Nowy schemat ma być dokładną kopią tabel w innych schematach, z wyjątkiem oczywiście bez danych.
Podczas ostatniej przeprowadzonej migracji korzystałem z nieco starszej wersji szyn. Wciąż w 3, ale w starszym wieku. Kiedy tworzyło znaczniki czasu, były one NIEUŻYWALNE. Po uruchomieniu migracji na drugi dzień (na nowych szynach) ... Cóż, wszystkie pola są teraz NIE_NULL
Mam kod, który został opracowany z myślą, że updated_at został wypełniony tylko po aktualizacji rekordu ... nie kiedy został stworzony. (aplikacje zewnętrzne i "funkcje" bazy danych tworzą rekordy). Aplikacje innych firm i funkcje bazy danych, które tworzą rekordy, spadają na nowy schemat ... Poszedłem i usunięto wszystkie ograniczenia NOT_NULL na wszystkich tabele ręcznie, ale nie chcę, aby zapisywać porządki bezpośrednio w moim zadaniu migracji, więc wszystkie przyszłe tabele są poprawione.
Pomyślałem, że najlepszą rzeczą jest nadpisanie metody znaczników czasu, która była zmieniony, z powrotem na taki, który nie złamał istniejącego kodu.
Więc jest powód, dla którego muszę odwrócić/przesłonić ..
Moje pytanie brzmi teraz: W jaki sposób mogę przesłonić metodę. Nie widzę jasną ścieżkę klasy do niego i nie jestem do końca pewien, jak go zastąpić ..
Mam już ponad 50 migracji, nie chcę ich przelać, zmieniając je wszystkie na ten paradygmat. Nie chcę też zmieniać kodu w szynach, aby utworzyć szkielet, aby wstawiał on uszkodzoną datę i czas zamiast znaczników czasu. – baash05
@daveatflow zmieniając migracje na pewno zabrałoby ci mniej niż wpisanie pytania :) Gdzie przesłonić: Z pewnością można uruchamiać zadania rake z włączonym debugowaniem? umieść wywołanie 'debuggera' wewnątrz bloku create_table, przejdź do metody znacznika czasu, Powinieneś uzyskać lokalizację pliku. Osobiście nie polecam tego, ponieważ może się to również zmienić w przyszłych wersjach szyn. – maniek
Jak już powiedziałem, mam ponad 50 migracji, musiałbym je wszystkie zmienić i wszystkie przyszłe migracje generowane przez szyny.Musiałbym również udokumentować, że inni musieli zmienić szyny migracji utworzone. Logika debuggera ... teraz jest inteligentna. Do zmiany w przyszłych wersjach. Próbuję tego uniknąć. Jeśli zmieniają nazwy pól (na przykład), to mam jedną bazę danych, dwa schematy, które powinny być identyczne, ale mają różne nazwy pól. – baash05