So che before_filter è solo per i controller in Rails, ma vorrei qualcosa del genere per un modello: ogni volta che viene chiamato un metodo nel mio modello, mi piacerebbe eseguire un metodo che determina se il metodo chiamato deve essere eseguito . Concettualmente, qualcosa di simile:Modello di rotaie "before_filter"?
class Website < ActiveRecord::Base
before_filter :confirm_company
def confirm_company
if self.parent.thing == false?
return false
end
end
def method1
#do stuff
end
end
Così, quando io chiamo @ website.method1, in primo luogo chiamare confirm_company, e se torno falso, non verrà eseguito Method1. Rails ha funzionalità come questa? Spero che sto solo perdendo qualcosa di ovvio qui ...
Vuoi dire [Attivo Record callback] (http://guides.rubyonrails.org/active_record_validations_callbacks.html#callbacks-overview)? – Mischa
Sì, una richiamata è ciò di cui ho bisogno, immagino. Ma nessuno dei callback disponibili può fare ciò che sto cercando. Non sto salvando, convalidando, inizializzando ... Sto chiamando un metodo. –
potresti utilizzare un oggetto proxy e delegare al modello se le tue condizioni sono soddisfatte – apneadiving