2010-02-24 10 views
5

W moim modelu chciałbym sprawdzić, czy aplikacja działa w konsoli IRB lub jako strona internetowa?Szyny sprawdź, czy konsola IRB lub strona internetowa

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

Czy możesz powiedzieć, dlaczego tego chcesz? Większy problem może mieć lepsze rozwiązanie. –

+0

Chcę ustawić pole user_id modelu before_save. Ponieważ UserSession nie istnieje w IRB, próbuję coś takiego. Lepszy solutiom? – xpepermint

Odpowiedz

3

Jest to bit hack, ale to powinno działać:

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

Ale jak mówi Kathy Van Kamień powyżej, to jest chyba coś, że ma lepsze rozwiązanie.

3

Dlaczego nie tylko if defined?(IRB)?

+2

Wydaje się, że to nie zawsze działa w zależności od twojego zasięgu, na razie ustaliłem 'Rails.const_defined? ('Console')'. – toupeira

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