我试图在测试中重新创建一个竞争条件,所以我可以尝试一些解决方案.我发现在我在测试中创建的线程中,ActiveRecord总是返回0表示计数,nil表示查找.例如,表"foos"中有3行:
it "whatever" do
puts Foo.count
5.times do
Thread.new do
puts Foo.count
end
end
end
Run Code Online (Sandbox Code Playgroud)
将打印
3
0
0
0
0
0
Run Code Online (Sandbox Code Playgroud)
test.log显示预期的查询,预期6次:
SELECT count(*) AS count_all FROM `active_agents`
Run Code Online (Sandbox Code Playgroud)
知道这里发生了什么吗?