2014-03-25 64 views
4

我在使用延遲作業時出現錯誤。作業加載失敗:不允許使用「@」作爲實例變量名稱

Job failed to load: `@' is not allowed as an instance variable name. 

調用它在這裏:

report = Report.find(params[:id]) 
report.delay.record_fixing(report.records.where(found: nil, pending: nil)) 
redirect_to reports_path 

和記錄固定是

def record_fixing(records) 
    records.search_fullcontact 
end 
+0

方法'search_fullcontact'的粘貼代碼 – Abk

+0

我得到同樣的問題,你有任何解決方案嗎? –

+0

和完整的錯誤跟蹤。 – sevenseacat

回答

1

這裏這個問題的原因是正在傳遞給方法record_fixing

參數
ActiveRelation Object(report.records.where(found: nil, pending: nil)) 

,它與方法名一起被序列化,因爲延遲的工作由於某種原因而做這件事,並且它沒有這樣做,因此引發了這個錯誤,並且將它添加到表列last_error,所以爲了解決這樣的問題,我建議我們應該通過對象id而不是整個對象,並在方法record_fixing中提取該對象,其思想是爲序列化提供更簡單的參數 。

+0

我得到了這個固定的,但忘了回答這個問題... –

+0

@MohamedElMahallawy,你的答案是什麼,請發佈。 –

+0

@Abk,你有什麼評論嗎? –