私が見ているものを信じるのに苦労していますが、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 レコードを確認します。Board
オブジェクトのtext
フィールドが正しく設定されていることを YAML で確認できます。しかし、DJ で実行すると、Text field is blank
例外が発生します。
どういうわけか、オブジェクトを適切に逆シリアル化していません。