Witam
Mam aplikacje w której są admini globalni, scope /admin. Oraz admini danych elementów, np projektów. Admin wybranego projektu może robić na projekcie te same operacje co admin globalny. Jak uniknąć powtarzania kodu w kontrolerach admin::projects_controler i projects_controller. ale zeby zachować scope, czyli np dalej przeprowadzac autoryzacje globalnego admina i miec powrót do odpowiednich sciezek po wykonaniu akcji. Zrobiłem wspolny widok dla pewnych operacji, z kontrolerem już jest gorzej.
[code=ruby]module Admin::ProjectsController
def index
end
def show
end
end
class Admin::ProjectsController
before_filter :authenticate_admin!
include Admin::ProjectsController
end
class SuperAdmin::ProjectsController
before_filter :authenticate_super_admin!
include Admin::ProjectsController
end[/code]
może coś takiego?
ewentualnie po prostu Admin::ProjectsController i wyświetlać (cancan?) albo wszystkie projekty albo własne
Może troche zle opisałem, mam tylko Admin::ProjectsController (dla superadminów) oraz ProjectsController gdzie właśnie za pomocą cancan’a i tablicy projects_memberships będzie sprawdzane kto jest adminem danego projektu a kto zwykłym członkiem.
Twoje podejście to już jakiś krok do przodu. Ale dalej trzeba by tutaj dodawać ify np po zakończeniu akcji update żeby wiedziało czy ma przekierować do admin_projects_path czy moze do projects_path
możesz zawsze w module zrobić metoda powiedzmy path_to_redirect i w kontolerze ją nadpisać. albo jakiś metaprogramming i sprawdzanie gdzie został dołączony moduł
przyjrzyj się może resource_controller. Tam można chyba łatwo zmieniać gdzie zrobić redirect po update, create