我很难相信我所看到的,但看起来 DJ 确实无法正确反序列化对象。我在 mongo 中查看 DJ 记录,并在 YAML 中看到该对象已text
设置其字段,但是当代码运行时,该text
字段未设置。这是一些最小的复制代码:
class Board
include Mongoid::Document
field :text, type: String
def process_text_field
if not self.text
raise "Text field is blank"
end
# Text field gets processed
end
end
# in a controller
def start_doing_something_slow
board = Board.find(params[:id])
board.text = "Text field is set"
board.save!
raise "Text disappeared!" unless board.text
board.delay.process_text_field
render json: {:result=>'ok'}
end
我用浏览器调用控制器方法,直接在mongo中查看DJ记录。我在 YAML 中看到该Board
对象的text
字段设置正确。但是当它在 DJ 中执行时,它会引发Text field is blank
异常。
不知何故,它没有正确反序列化对象。