在未缓存的块中选择返回一个陈旧的对象

时间:2013-10-09 13:31:54

标签: mysql ruby-on-rails-3

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

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。

0 个答案:

没有答案