Dzięki, świetnie działa jednak mam pewien problem.
Aby korzystać z Model.delay.method metoda musi być “klasowa”.
I wszystko byłoby fajnie, bo zauważyłem że job zapamiętuje dane wejściowe metody w momencie wywołania, ale samą metodę wykonuje później. I na tym mi zależało, jednak używając self.method nie mogę otrzymać aktualnych danych ani korzystać z metod instancji.
Przykładowo podczas wejścia użytkownika na stronę, wraz z generowaniem widoku, chcę odpalić timer : QuizzesController.delay(run_at: @quiz.time_limit.minutes.from_now).form_timeout(session[:user_id],session[:test_password])
A metoda form_timeout wyglada tak:
def self.form_timeout(id, test_password)
if test_password == session[:test_password]
Score.create(user_id: id, name: test_password, points: -1)
session.delete(:test_password)
end
end
Wyskakuje mi błąd że metoda session jest undefined.
Przede wszystkim: Jak przekazać aktualne dane z aplikacji do klasowej metody ergo jaki jest sposób abym mógł użyć session (aktualnego na czas wykonania metody) w tak wyglądającym scenariuszu?
Dodatkowo: jaki jest sposób aby móc używać klas instancjonowanych w takim scenariuszu?
@Edit Czy mogę wywołać metodę “instancjową” z poziomu metody klasy i przekazać tej pierwszej parametry z tej drugiem (np. returnem)?
@Edit2 Nie mogę, ale rozwiązałem już problem w inny sposób.