2010-02-24 8 views
5

Nel mio modello vorrei verificare se l'app è in esecuzione all'interno di consolle IRB o come sito Web?Rails controlla se console IRB o pagina web

class MyModel < ActiveRecord::Base 
    def xmethod 
    if !isIRBconsol 
     self.user_id = UserSession.find.user.id 
    end 
    end 
end 
+3

Puoi dire perché vuoi questo? Il problema più grande potrebbe avere una soluzione migliore. –

+0

Voglio impostare il campo user_id di un modello before_save. Perché UserSession non esiste in IRB provo smth in questo modo. Migliore solutiom? – xpepermint

risposta

3

Questo è un po 'di un hack, ma dovrebbe funzionare:

class MyModel < ActiveRecord::Base 
    def am_i_in_irb? 
    self.private_methods.include? 'irb_binding' 
    end 
end 

Ma, come ha detto Kathy Van pietra sopra, questo è probabilmente qualcosa che ha una soluzione migliore.

3

Perché non solo if defined?(IRB)?

+2

Questo non sembra funzionare sempre a seconda del tuo scope, per ora ho risolto con 'Rails.const_defined? ('Console')'. – toupeira

0
unless self.private_methods.include? 'irb_binding' 
    #put your rufus scheduling here 
end 
Problemi correlati