私は単純な選択と更新のロジックに問題があります:
task = Task.queueing.where(conditions).order(:created_at.asc).first
if task
task.set(:status=>2)
end
それは簡単ですよね?
しかし、問題は次のとおりです。同時に来る100以上のリクエストがあります。非常に多くのクライアントが同じレコードを取得しましたが、それは私が望んでいないことです。
mysql では、重複したロードを避けるために次のようなことができます。
rnd_str = 10000000 * rand
Task.update(status:rnd_str).limit(1) # this may be wrong code
task = Task.where(status:rnd_str).first
task.set(status:2)
render :json=>task
しかし、mongomapper でクエリを使用して 1 つのレコードを更新する方法は?
どうも !