4

我的范围如下所示:

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

4

2 回答 2

6

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

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

但话又说回来,我对新的 Rails 4 范围缓存不是很熟悉。

于 2013-08-04T19:32:38.997 回答
1

发现问题所在了!范围应定义如下:

scope :top, order: 'score DESC'
于 2013-08-04T19:38:10.123 回答