Foobar.find(1).votes_count0を返します。
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だけです。
誰かがこれを説明できますか?