[rails] filtri come classi esterne: dove?

Ciao! Mi sto studiando “The Rails way”, gran bel libro, lo consiglio.

Comunque, in questo libro si parla anche di come costruire classi-filtro
esterne.

Ora: dov’è il posto migliore per piazzare ste classi-filtro? Io ho
provato nel controller, prima della definizione dello stesso, e
funziona. Ma è il posto + giusto? Ad esempio ho notato che nel corpo del
filtro, il logger non funziona +.

Es. del codice contenuto in checkvars_controller.rb:

#classe-filtro

class TestFilter
def self.filter(controller)
#i logger non sono disponibili nei filtri esterni
controller.test_ext_filter
end
end

#controller

class CheckvarsController < ApplicationController

#esercizi sui filtri

before_filter :prima, TestFilter, :only => :instance_vars
after_filter :dopo

def instance_vars
@var1 = ‘luca’
end

def test_filter_condition
logger.info “no before filter”
end

#vedi TestFilter
def test_ext_filter
@ext_filter = ‘TestFilter’
end

#i filtri meglio farli privati
private

def prima
logger.info “eseguo prima”
end

def dopo
logger.info “eseguo dopo”
end

end

Luca R. wrote:

Ciao! Mi sto studiando “The Rails way”, gran bel libro, lo consiglio.

Comunque, in questo libro si parla anche di come costruire classi-filtro
esterne.

Ora: dov’è il posto migliore per piazzare ste classi-filtro?

le puoi mettere in un plugin, oppure in una directory qualsiasi nel tree
della tua applicazione (devi solo avere cura di fare l’include della dua
directory quando fa il boot dicendoglielo in environment.rb o in un
inizializer).
Comunque, secondo me, se quella classe filtro viene usata solo in quel
controller, io la metterei proprio nel controller.

Grande! Grazie mille! :slight_smile:

S2 Akira wrote:

Luca R. wrote:

Ciao! Mi sto studiando “The Rails way”, gran bel libro, lo consiglio.

Comunque, in questo libro si parla anche di come costruire classi-filtro
esterne.

Ora: dov’è il posto migliore per piazzare ste classi-filtro?

le puoi mettere in un plugin, oppure in una directory qualsiasi nel tree
della tua applicazione (devi solo avere cura di fare l’include della dua
directory quando fa il boot dicendoglielo in environment.rb o in un
inizializer).
Comunque, secondo me, se quella classe filtro viene usata solo in quel
controller, io la metterei proprio nel controller.