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

标签 ruby-on-rails ruby database ruby-on-rails-3 caching

我正在使用 Ruby on Rails v3.2.2,我想仅在某些情况下通过禁用系统缓存来检索数据库数据。也就是说,在我的 View 文件中,我有如下内容:

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

渲染 View 文件时,它会为“Random articles 1”和“Random articles 2”输出相同的数据。发生这种情况是因为 Ruby on Rails 缓存系统(“默认”/“约定”)出于性能原因尝试尽可能少地访问数据库。

我怎样才能防止这种行为(仅针对上述情况)以便在我的 View 文件中为 finder 方法输出不同的数据?

最佳答案

uncached ActiveRecord 中的方法。看起来你可以像这样使用它:

articles = Article.uncached do
  Article.order('RAND()').limit(3)
end

但您最好将其提取到模型的类方法中。

参见 this article了解更多信息

关于ruby-on-rails - 如何通过仅针对一种情况禁用Ruby on Rails 缓存系统来检索数据库数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153853/

相关文章:

ruby - 无法使用 gsub 和 hash 修改卡住的字符串错误

sql - 在 Oracle 11gR2 上使用 Union ALL 的大 View

sql - 如果整个列中的值为空,则从输出中删除

ruby-on-rails - 使用 :confirm in my link_to helper method in ruby on rails 4 has no effect what so ever. 可能有什么问题?

ruby-on-rails - 是什么导致 Rails 应用程序中的 Listen 错误

mysql - 合并一年来创建的具有相同结构的两个数据库,同时牢记 ID 和关系 - MySQL

ruby - 如何在 kiba etl 脚本(kiba gem)中进行聚合转换?

PHP/MYSQL : How to create image galleries that rotate/change during each page refresh/load

ruby-on-rails - Rspec, cucumber : best speed database clean strategy

ruby-on-rails - rails 观察者自定义回调