Jak to zaprojektować w Rails'ach?

Witam,

Mam pewien problem z zaprojektowaniem pewnej struktury. Chodzi o to, że wszystkie elementy tej struktury muszą być modelami i muszą mieć własną tabelę (metoda STI odpada). Chce mieć taką hierarchię: mam główny model, a pod nim są podmodele. Chodzi o to, że z model główny przechowywałby tak jakby informacje o podmodelach np. tytuł, opis itd., ale przede wszystkim zależy mi na tym, żeby z poziomu tego głównego modelu (określonego rekordu) móc odwołać się do konkretnego podmodelu, czyli mieć tak jakby kolumnę, która pozwalałaby odwołać się do tego podmodelu (tutaj z kolei odpada polimorfirm, ponieważ tam jest przechowywana informacja o klasie i id, a mi chodzi tylko o klasę). Przykładowo chciałbym zrobić widok index, w którym wypisałbym te wszystkie podmodele i chciałbym też móc umieścić linki do konkretnych podmodeli do metody index. Czy to jest w ogóle do zrealizowania? Czy może istnieje jakieś lepsze rozwiązanie? Bardzo zależy mi na odpowiedzi, z góry dzięki.

Pozdrawiam,
brando.

Czytam Twoją wypowiedź już n-ty raz i chyba dalej nie rozumiem tego, wydaje mi się, że graficzna prezentacja mogłaby dać lepsze rozeznanie na temat co dokładnie Tobie chodzi po głowie

ALBO

mówisz o zwykłych relacjach i jeżeli tak to wszystko co potrzebujesz powinieneś mieć tu ewentualnie możesz zastanowić się nad bazą nierelacyjną w stylu MongoDB.

Przesyłam rysunek:

Niestety relacje też nie wchodzą w grę, ponieważ chce mieć tylko 1 pole, które odwoła się do konkretnego podmodelu.

Może łatwiej będzie jak podasz jakiś konkretny/rzeczywisty przykład, czemu to ma służyć itd.

2 Likes

W mojej aplikacji chce zrobić coś takiego jak komponenty (moduły), czyli elementy strony. Te komponenty będzie można edytować i będą dotyczyć różnych części strony np. menu, mapa itd. Dlatego chce mieć model główny, który będzie mi wyświetlał te podmodele. Znalazłem trochę może proste rozwiązanie, ale działa, do głównego modelu dodałem kolumnę, gdzie przechowuję nazwę klasy danego podmodelu i gdy wypisuję w widoku index link to przerabiam tą klasę na nazwę tabeli, dopisuję path i wywołuję metodę send i dzięki temu mam link do konkretnego podmodelu. Może da się to zrobić lepiej?