2009-04-24 11 views
5

Progettazione di un'app Web con una sezione di amministrazione e una sezione pubblica. Sembra avere un controller pubblico di fronte solo per "index" e "show" è un po 'ridondante. Tutti i suggerimenti che ho letto suggeriscono un namespace per admin, che va bene. Mi chiedo solo se dovrei avere un controller con un'azione di aggiunta, dì "list_public" o qualcosa del genere.- Due controller o aggiunta di azioni?

Sono nuovo con Rails, quindi forse sono solo preoccupato di nulla. Non mi piace l'idea di avere tutti questi controller, visualizzazioni, aiutanti con lo stesso nome sparsi in tutte le mie directory di progetto.

Qualcuno ha qualche intuizione a questo? Grazie in anticipo.

risposta

7

Direi che avere entrambi i controller (uno pubblico e un amministratore) è la soluzione migliore.

Ora ciò che si potrebbe fare è che entrambi i controller chiamino lo stesso metodo che fa le azioni correlate nelle azioni.

class MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    end 
end 

class Admin::MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    # Admin only stuff goes here 
    end 
end 
+0

Grazie, Matt. Questo ha senso, ho solo bisogno di verificare che non sia "esagerato". – TMB

6

Come ha detto Matt, ma si può anche fare questo:

class MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    end 
end 

class Admin::MyController < MyController 
    def show 
    super 
    # Admin only stuff goes here 
    end 
end 

Questo significa che si può solo concentrarsi sui casi più specializzati per Admin :: MyController piuttosto che ripetere codice.