2

我正在做类似以下的事情。

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。

4

0 回答 0