witam
Dodaje w kontrolerze obiekt i drugi który jest z nim w relacji belongs_to. Czy ma jakieś znaczenie i dlaczego tak a nie inaczej, to w jakiej kolejnosci obiekty będą dodawane do bazy? Najpierw rodzic a potem dziecko czy na odwrót i update parent_id u dziecka po dodaniu rodzica ?
no z teorii baz danych wynika że pierw musi być w bazie parent by móc childom dac jego id w pole relacyjne. Na inne zachowanie relacja, ktora sprawdza istnienie w bazie id rodzina nie pozwoli. No ale nie wiem jak to z poziomu rails jest zalatwiane.
[quote=Artur79]witam
Dodaje w kontrolerze obiekt i drugi który jest z nim w relacji belongs_to. Czy ma jakieś znaczenie i dlaczego tak a nie inaczej, to w jakiej kolejnosci obiekty będą dodawane do bazy? Najpierw rodzic a potem dziecko czy na odwrót i update parent_id u dziecka po dodaniu rodzica ?[/quote]
To zależy… jeśli masz sprawdzanie spójności po stronie bazy danych (foreign keys) to ważne jest aby obiekt z has_one, has_many był dodany przed obiektem z belongs_to.
Mowia tu oczywiście o “normalnych kluczach obcych”, w “nienormalnych” sprawdzanie spójności jest odroczone do momentu commitu transakcji, w takim przypadku kolejność, z punktu widzenia bd nie ma znaczenia.
[edit]
Zrobiłem testowy projekcik (:
[code]>> p = Parent.new
c = Child.new
p.children << c
p.save
INSERT INTO “parents” (“name”, “updated_at”, “created_at”) VALUES(NULL, ‘2010-05-12 14:45:50’, ‘2010-05-12 14:45:50’)
INSERT INTO “children” (“name”, “updated_at”, “parent_id”, “created_at”) VALUES(NULL, ‘2010-05-12 14:45:50’, 6, ‘2010-05-12 14:45:50’)[/code]