为什么我的范围被缓存?

时间:2013-08-04 19:23:48

标签: ruby-on-rails activerecord

我的范围如下:

scope :top, order('score DESC')

在我的控制器中使用如下:

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

2 个答案:

答案 0 :(得分:6)

我认为如果你使用lambda,那么它不应该被缓存:

scope :top, lambda { order('score DESC') }

但话说回来,我并不熟悉新的Rails 4范围缓存。

答案 1 :(得分:1)

发现问题是什么!范围应该定义如下:

scope :top, order: 'score DESC'