Przesłanka: Zwykle podczas przygotowywania nowej aplikacji Ruby on Rails rysuję modele i relacje dotyczące nawigacji użytkownika. Zwykle uderzam w miejsce, w którym muszę zadać sobie pytanie, czy powinienem wyjść poza zwykłą "regułę" zagnieżdżania nie więcej niż 1 poziom głębokości. Czasem czuję potrzebę zagnieżdżenia, zamiast tworzyć inną ścieżkę obszaru nazw i duplikować pracę.
Oto przykład:
Aby zagnieździć się lub nie zagnieździć?
Modele: użytkownika, Firma, Lokalizacja
Użytkownik ma i należy do wielu firm (wiele do wielu)
Filmaster i należy do wielu lokalizacjach (wiele do wielu)
Spółka posiada i należy do wielu miejscach (wiele do wielu)
trasach:
1 poziom zagnieżdżenia
użytkowników /: user_id/Katalog firm/- lista wszystkich firm związanych z użytkownikiem
użytkowników /: user_id/lokalizacje/- lista wszystkich miejsc związanych z użytkownikiem
więcej niż 1 poziom zagnieżdżenia
użytkowników /: id_użytkownika/firmy /: company_id/locations/- lista wszystkich lokalizacji firmy użytkownika:
Moje pytanie brzmi, czy właściwe jest zagnieździć więcej niż 1 poziom w RoR? Tak lub nie? I dlaczego?
Trasa płytka FTW. To prawie na pewno to, czego chcesz. LocationsController # index nie ma sensu jako/lokalizacji, ponieważ nigdy nie chciałbyś/all/the location.Pozwala jednak zachować wszystkie lokalizacje w/location/ niezależnie od typu, z którym jest skojarzony. –
Otto