Projektowanie aplikacji - Admin globalny i pozostali admini a DRY

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ł :wink:

przyjrzyj się może resource_controller. Tam można chyba łatwo zmieniać gdzie zrobić redirect po update, create