Invocare un metodo senza conoscerne il nome…
17 Ott 2008Categoria: Ruby on Rails Autore: Filippo
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
$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: dynamic, method, metodi dinamici, ruby, Ruby on Rails

















































