sendMail deve eseguire delle operazioni differenti a seconda che venga
chiamata da inserisci o da elimina o da altri metodi.
Come e’ possibile determinare cio’?
sendMail deve eseguire delle operazioni differenti a seconda che venga
chiamata da inserisci o da elimina o da altri metodi.
Come e’ possibile determinare cio’?
passargli un parametro che gli permetta di decidere?
forse mi devi spiegare meglio il problema, con un caso concreto
sendMail deve eseguire delle operazioni differenti a
seconda che venga
chiamata da inserisci o da elimina o da altri
metodi.
Come e’ possibile determinare cio’?
usando Kernel::caller(), ma imo è una soluzione
sporchina, non è meglio un approccio classico dove
foo() chiama sendmail_foo() e bar chiama
sendmail_bar()?
Oltretutto caller restituisce stringhe che dovrai
parsare a colpi di regex, che imo è uno dei più grassi
difetti di ruby
Il giorno ven, 18/05/2007 alle 08.51 +0200, Mauro S. ha scritto:
…
come determinare da quale metodo all’interno della classe e’ chiamato il
metodo sendMail?
Non ti conviene procedere in questa maniera. Quello che ti conviene fare
è creare un metodo #sendMail che contenga la logica comune ai due casi,
poi due metodi #sendMailOnInsert e #sendMailOnDelete che contengono la
logica specifica per i due case e si occupano di chiamare #sendMail. In
altre parole:
def sendMail
#…
end
def sendMailOnInsert
#…
sendMail
end
def sendMailOnDelete
#…
sendMail
end
Questo modo di procedere ha il vantaggio che, se devi aggiungere una
terza azione (ad esempio, modifica), devi solo aggiungere un metodo #sendMailOnUpdate senza bisogno di modificare #sendMail.
sendMail deve eseguire delle operazioni differenti a seconda che venga
chiamata da inserisci o da elimina o da altri metodi.
Come e’ possibile determinare cio’?
passargli un parametro che gli permetta di decidere?
forse mi devi spiegare meglio il problema, con un caso concreto
Ho una classe con i metodi:
def inserisci
…
…
sendMail
end
def elimina
…
…
sendMail
end
ecc…
def sendMail
se chiamata da inserisci fai: …
se chiamata da elimina fai: …
…
end
come determinare da quale metodo all’interno della classe e’ chiamato il
metodo sendMail?