我正在做类似以下的事情。
class SomeModel
def crazy
sm = SomeModel.where(:id => 1).first
sleep(30)
# after 15 seconds we update the record manually
sm = SomeModel.uncached {SomeModel.where(:id => 1).first}
begin
sm.field = 'value'
sm.save
rescue ActiveRecord::StaleObjectError => e
puts 'happening'
end
end
end
当从控制器调用此模型方法时,由于未缓存的选择是在手动更新后执行的,所以我不应该得到一个陈旧的对象,但测试它会说不然。我是不是误会了什么?我正在使用带有 Mysql 的 Rails 3.0.5。