Foobar.find(1).votes_count
0を返します。
Railsコンソールでは、次のことを行っています。
10.times { Resque.enqueue(AddCountToFoobar, 1) }
私のレスクワーカー:
class AddCountToFoobar
@queue = :low
def self.perform(id)
foobar = Foobar.find(id)
foobar.update_attributes(:count => foobar.votes_count +1)
end
end
になると期待Foobar.find(1).votes_count
しますが10
、代わりに4を返します。10.times { Resque.enqueue(AddCountToFoobar, 1) }
もう一度実行すると、同じ動作が返されます。増分votes_count
は4、場合によっては5だけです。
誰かがこれを説明できますか?