1
我需要在活動作業計劃在稍後執行時使用時存儲信息。我想將這些信息保存在活動作業本身中,但我不確定這是否可行。將數據存儲在作業中以供執行時使用
這裏有我想要的簡化版本,它再現了一個錯誤我看到:
class TestJob < ActiveJob::Base
queue_as :default
attr_reader :save_for_later
def initialize(info)
@save_for_later = info
end
def perform()
logger.info(@save_for_later)
end
end
class CollectionsController < ApplicationController
def schedule_test_job
TestJob.perform_later(Date.new)
end
end
當我打電話schedule_test_job在集合控制器,我得到一個錯誤: 未定義的方法'地圖」的無:NilClass 並且不執行執行操作。
我假設我需要堅持信息我試圖保存在我的數據庫中的其他地方,但我想知道是否有一個正確的方法來完成我在這裏做的。我也不明白拋出的錯誤來自哪裏。
你從哪裏得到那個錯誤?這可能是因爲你不應該重寫intialize,因爲它也會做一些其他的事情。您可以傳遞日期作爲工作參數,因爲它將被保留,但將其作爲數字傳遞,因爲ActiveJob只接受基本類型(可以輕鬆地序列化/反序列化)。你可以使用'i = Time.current.to_i'和'Time.at(i)' – bcd 2015-02-08 21:38:51
@bcd當控制器中的函數'schedule_test_job'被調用時發生錯誤。關於初始化需要做其他事情的問題,如果我在初始化塊的末尾添加對super()的調用,這個錯誤會消失。 – Will 2015-02-09 04:28:05