Invocare un metodo senza conoscerne il nome…

17 Ott 2008
Categoria: Ruby on Rails

Capita a volte di dover richiamare in modo dinamico un metodo senza però conoscerne il vero nome. E’ il caso di operazioni ripetitive che vanno a richiamare un metodo diverso in base ad esempio al modello sul quale si va ad intervenire.
Vediamo come fare in maniera semplice e veloce!


Esempio:

#linkable è array di nomi di modelli
$linkable = [:page, :category, :article, :gallery]
#scorro l’array
$linkable.each do |string|
#verifico che il menu punti ad un oggetto preciso (a rotazione page, category….)
if menu.is_a? string.to_s.camelize.constantize
# richiamo il metodo composto dalle parole render_ + il nome del modello (ad esempio render_page)
send(”render_#{menu_item_root.ownable.class.to_s.downcase}”, menu.root, url)
end
end

In questo modo ho risolto brillantemente un problema di integrazione tra codice esistente nell’applicazione “base” e il codice di un qualsiasi plugin che scriverò in futuro (che oltre alle page, category, article e gallery magari gestisca i video)…

Ciao!

Tag: , , , ,

Lascia un Commento

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word