ruby-on-rails - 为什么我的范围被缓存?

标签 ruby-on-rails activerecord

我有一个如下所示的范围:

scope :top, order('score DESC')

它在我的 Controller 中使用如下:
def top
  @users = User.top
  render "list"
end

现在,这个作用域似乎无缘无故地被缓存了。如果我加载首页,添加一个用户并重新加载它,该用户不会出现在列表中。

但是,如果我这样做:
def top
  @users = User.order('score DESC')
  render "list"
end

结果不会被缓存。这里发生了什么?我正在使用 Ruby 2.0.0 和 Rails 4.0.0

最佳答案

我认为如果你使用 lambda,那么它不应该被缓存:
scope :top, lambda { order('score DESC') }
但话说回来,我对新的 Rails 4 范围缓存不太熟悉。

关于ruby-on-rails - 为什么我的范围被缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18046704/

相关文章:

ruby-on-rails - 环境/开发 Assets 路径的副本在 gems 目录中找不到 jquery-ui-rails

ruby-on-rails - CAS、SAML 与 OAuth2

ruby-on-rails - Rails 的 ActiveRecord 序列化 :attr method gives "Missing Class or module error"

ruby-on-rails - 在 Rails 中,belongs_to 上有 has_one 吗?

ruby-on-rails - 如何在 Devise 中填充一些默认用户?

mysql - Rails 4 - 如果另一个表中没有特定记录,如何从表中选择数据?

mysql - 尽管 where 子句中的列上存在索引,但事件记录查找间歇性变慢

php - SQL 在 CodeIgniter 中加入 Active Record

ruby-on-rails - Ruby on Rails 循环大量记录时出现内存泄漏; find_each 没有帮助

ruby-on-rails - 使用 rake 数据库 :migrate with sinatra and activerecord (not rails)