Cześć!
Mam 2 pomysły jak się zabrać za pisanie aplikacji i nie wiem który jest poprawny.
Aplikacja dzieli się na 2 części, pierwsza widoczna dla wszystkich i druga widoczna tylko dla zalogowanych (administrator).
Załóżmy, że mam produkty. Administrator może (w panelu administratora) mieć wyświetloną ich listę, może dodawać, edytować i usuwać (index, create, edit, update, delete). Oczywiście to wszystko po autoryzacji użytkownika.
Wszyscy w głównej części mogą przeglądać te produkty i mieć wyświetlone informacje o nich (index, show). Tylko lista tych produktów oczywiście wygląda wizualnie inaczej niż w panelu administratora.
Czyli mamy jakby 2 moduły, ale na produktach operujemy zarówno w jednym jak i drugim.
Pierwsze podejście jest takie, żeby stworzyć w domyślnej przestrzeni nazw kontroler Products i w nim wszystkie metody. Odpowiednie zabezpieczyć poprzez before_filter :auth_user. Jako że mamy 2x index, czyli 2 różne sposoby wyświetlania wszystkich przedmiotów to dodanie osobnej metody do wyświetlenia w panelu admin (np “manage”), tylko pewnie kod się powieli z index… Czyli ogólnie wszystko trzymamy w głównym “module”.
Drugie podejście to utworzyć przestrzeń nazw “admin”, tam kontroler Products zabezpieczony cały autoryzacją i w nim metody dla admina (index, create, edit, update, delete). W głównej przestrzeni znowu kontroler Products tylko w nim metody index i show dostępne dla wszystkich. Metody pewnie będą powielać kod z kontrolera admina, ale chodzi o to żeby był inny widok. No i kontroler Products w głównej przestrzeni nazw będzie korzystał z modelu Admin::Product żeby go nie powielać… Czy ogólnie mamy rozbite na 2 części, ale ten sam kontroler w obu.
Wiem, że trochę zagmatwanie napisane, jeśli coś będzie niejasne postaram się sprecyzować. Proszę o pomoc jak to powinno wyglądać.
Pozdrawiam,
lukaszl