Projekt powoli rośnie i po pewnym czasie pojawił się problem ze strukturą aplikacji. Problem dotyczy tego, czy ta struktura, którą wymyśliłem jest dobra, akceptowalna, kiepska?
Zrobiłe tak, że kontrolery z dopiskiem subpage w nazwie odpowiadają tylko za wygenerowanie widoku nowej podstrony. Pozostałe kontrolery (users, comments, programs) odpowiedzialne są za zbiór funkcjonalności związanych z danym modelem. Czyli za funkcjonalności typu profile, login, regiser odpowiada jedne kontroler “users”, który w swoim widoku zawiera panele (np. profile_panel.html.erb), a które za pomoca helerów ładowane są do widoków obsługiwanych przez kontrolery takie jak subpage_profile.
1.a Czy dla różnych funkcjonalności związanych z obsługą użytkowników takich jak np. profile, register, login i tp. zrobić osobne kontrolery?
1.b Czy też wrzucić to razem do jednego kontrolera “users” i w widoku tegoż kontrolera generować podstrony odpowiedzialne za rożne funkcjonalności?
1.c Czy pozostawić to tak jak jest obecnie, czyli kontrolery takie jak users są odpowiedzialne za panele logowania, rejestracji, profilu i te ładowane są za pomocą helperów do widoków podstron, za które z kolei odpowiedzialne są kontrolery do generowania samych widoków?
- Co z kontrolerami do ładowania widoków podstron takimi jak np. subpage_register_controller (nieodpowiedzialnymi za nic innego), czy są potrzebne, czy lepiej bez nich?
STRUKTURA APLIKACJI:
Dla strony głównej (w uproszczeniu):
home_controller => action index => views/comments(index.html.erb) => {
render partial_1 => shared_1.html
helper_login_panel => views/users(login_panel.html.erb) => [wysyłka formularza edycji] => users_controller => action login_validate => redirect_to “/”
render partial_2 => shared_2.html
helper_comments_panel => views/comments(commenst_panel.html.erb) => [wysyłka formularza edycji] => comments_controller => action (destroy, create, update i tp.)
render partial_3 => shared_3.html
render partial_4 =>shared_4.html {
link_to “Zarejestruj się”, :action => “subpage_register”, :controller => ‘subpage_register’
link_to “Twój profil”, :action => “subpage_profile”, :controller => ‘subpage_profile’
}
}
Dla podstrony register (w uproszczeniu):
subpage_register_controller => action subpage_register=> views/subpage_register(subpage_register.html.erb) => {
render partial_1 => shared_1.html
helper_login_panel => views/users(login_panel.html.erb) => [wysyłka formularza edycji] => users_controller => action login_validate => redirect_to “/”
render partial_2 => shared_2.html
helper_users_register_panel => views/users(register_panel.html.erb) => [wysyłka formularza edycji] => users_controller => action create => views/subpage_register(subpage_summary.html.erb)
render partial_3 => shared_3.html
render partial_4 =>shared_4.html
}
Dla strony podstrony profile (w uproszczeniu):
subpage_profile_controller => action subpage_profile=> views/subpage_profile(subpage_profile.html.erb) => {
render partial_1 => shared_1.html
helper_login_panel => views/users(login_panel.html.erb) => [wysyłka formularza edycji] => users_controller => action login_validate => redirect_to “/”
render partial_2 => shared_2.html
helper_users_profile_panel => views/users(profile_panel.html.erb) => [wysyłka formularza edycji] => users_controller => action update => redirect_to “/”
render partial_3 => shared_3.html
render partial_4 =>shared_4.html
}