Potrzebuję pomocy w kwestii mojego projektu. Mam utworzone dwie tabele/modele Students (posiada kolumnę UserId) i Users. Są one ze sobą połączone relacją Stuents belongs_to user. Chcę teraz w formularzu studenta new mieć możliwośc korzystania z pól objektu Users, czyli mieć:
Ale z tego co czytam, to stosuje się to wtedy kiedy mamy te same parametry w obiektach. Np, Employee (Administrator, Editor). A przecież mój student ma swój numer indeksu, a prowadzący swój tytuł naukowy. Jeśli by nawet uznać coś za co można się zabrać, to jak uzyskać dostęp wtedy do imienia prowadzącego z pozycji kursu. Wtedy w tabeli Courses, będzie kolumna nadal teacher_Id? I wystarczy w widoku użyć zwykłej kropki, tzn. course.teacher.user.name ?
Raczej powiedziałbym, że wtedy kiedy mamy częśc wspólnych atrybutów i zachowań.[/quote]
No to i nawet, to jak przetrzymywać to w bazie? Da się je trzymać osobno? Jeśli tak to połowa sukcesu, jeśli da się tylko razem, to komplikuje sprawę.
IMHO lepiej się projektuje modele i powiazania miedzy nimi jesli nie zastanawiasz się jak to bedzie wygladalo w tabelkach w bazie danych[/quote]
Lepiej? Bazę to się powinno projektować przed wszystkim innym. W tym momencie chciałbyś z powodu Prawa Demeter trzymać imię, nazwisko, e-mail, haslo, tytuł prowadzącego w tabeli prowadzącego. A osobno imię nazwisko, e-mail, hasło, indeks w tabeli studenta. Wiesz… jak dla mnie to głupota.
Raczej powiedziałbym, że wtedy kiedy mamy częśc wspólnych atrybutów i zachowań.[/quote]
No to i nawet, to jak przetrzymywać to w bazie? Da się je trzymać osobno? Jeśli tak to połowa sukcesu, jeśli da się tylko razem, to komplikuje sprawę.[/quote]
STI polega na tym ze oba modele sa w tej samej tabeli, czesc pol jest pustych i dochodzi pole okreslajace typ obiektu (defaultowo type a AR). ActiveRecord robi to zupelnie przezroczyscie. Wystarczy ze jeden model dziedziczy po innym.
Może zamiast relacji czy dziedziczenia zastanów jakie zachowania dziala student i wykladowca i wydziel je do oddzielnych obiektów lub modułów.
Lepiej? Bazę to się powinno projektować przed wszystkim innym.[/quote]
Czyli wg ciebie nie moze istniec model bez tabeli w bazie? I model powinien wystawiać dalej wszystkie kolumny jakie ma ma w tabeli? Moim zdaniem to zła droga.