如何通过仅针对一种情况禁用Ruby on Rails缓存系统来检索数据库数据?

Bac*_*cko 3 ruby database caching ruby-on-rails ruby-on-rails-3

我正在使用Ruby on Rails v3.2.2,我想通过仅在一个案例中禁用系统缓存来检索数据库数据.也就是说,在我的视图文件中,我有以下内容:

<h1>Random articles 1</h1>
<%= Article.order('RAND()').limit(3).inspect %>
...
<h1>Random articles 2</h1>
<%= Article.order('RAND()').limit(3).inspect %>
Run Code Online (Sandbox Code Playgroud)

当呈现视图文件时,它在"随机文章1"和"随机文章2"下输出相同的数据.之所以发生这种情况是因为Ruby on Rails缓存系统(通过"默认"/"约定")试图以性能为由尽可能少地访问数据库.

如何防止此行为(仅针对上述情况),以便在视图文件中为finder方法输出不同的数据?

KL-*_*L-7 6

uncachedActiveRecord中有方法.看起来你可以像这样使用它:

articles = Article.uncached do
  Article.order('RAND()').limit(3)
end
Run Code Online (Sandbox Code Playgroud)

但是你最好把它提取到模型的类方法中.

有关更多信息,请参阅此文章