2

我有这个模型

用户.rb

default_scope :order => 'users.created_at DESC'

scope :ranking, lambda { unscoped { order('users.ranking DESC') }}

我仍然得到一个 to_sql ,其中包括ORDER BY users.created_at DESC, users.ranking DESC...

有人可以解释为什么吗?

我真的不想从我将使用此模型的每个控制器中调用 unscoped 。

谢谢!

4

2 回答 2

1

正如您所发现的,default_scope通常麻烦多于其价值。如果您想坚持使用它,可以使用reorder忽略之前的顺序:

scope :ranking, reorder("ranking DESC")
于 2011-02-01T10:05:03.580 回答
-1

不知道为什么@TimPost 删除了我的答案,但我在一个项目中使用了 rails 3.0.5 和 ruby​​ 1.9.2,当我使用 reorder(顺便说一句)时,它在日志中说明了这一点

弃用警告:重新排序已弃用。请改用 except(:order).order(...) 。(从<class:Item>

所以我认为我的答案被删除是不公平的

于 2011-04-26T22:46:11.357 回答