0

Railsは更新されたバージョンのレコードを返していません。

モデルには2つのメソッドがありsubmit_job(sig, label, jobtype)ます。バックエンドで処理されるデータベースにジョブを送信し、送信されたpoll_result(id)ジョブを毎秒ポーリングして完了を確認し、完了したジョブの結果をに返します。ユーザー。

私の問題は、poll_result(id)メソッドが更新されたレコードを取得しないことです。

def self.poll_result(id)

    change = false
    Workbench.where("id = ?", id).each do |sig|         
        if sig.resultsready.to_i == 1
            change = true
        end
    end
    return change
end

アクセスしているレコードの結果を印刷してもらうとわかるように、これはすべて、元の挿入の結果を何度も繰り返してカムバックすることです。データベースを直接調べていると、データベースが正しいIDを呼び出しており、レコードが更新されていることがわかります。データベースでresultsreadyが1に設定されている場合、ループは終了して戻る必要がありますが、無限ループでスタックします。

私の仮定では、何らかの形でキャッシュされている古い/古いレコードを取得していると思いますが、新しいレコードを取得するように強制する方法を一生理解することはできません。

ありがとうございました、

-デニス

4

1 に答える 1

0

問題をWorkbench.connection.clear_query_cache修正しました!具体的には、呼び出す直前にコントローラーレベルで追加しましたWorkbench.poll_result(id)

于 2012-07-11T19:31:05.297 に答える