我正在做类似以下的事情。
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
当从控制器调用此模型方法时,由于在手动更新后执行了未缓存的选择,因此我不应该获得过时的对象,而是测试它。我误会了什么吗?我正在使用Rails 3.0.5与Mysql。