default_scope会覆盖模型中未绑定的rails3

时间:2011-02-01 07:00:42

标签: ruby-on-rails-3 arel

我有这个模型

User.rb

default_scope :order => 'users.created_at DESC'

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

我仍然得到一个包含ORDER BY users.created_at DESC, users.ranking DESC ...

的to_sql

有人可以解释原因吗?

我真的不想从每个控制器调用未编程的人,我会使用这个模型。

谢谢!

2 个答案:

答案 0 :(得分:1)

正如您所发现的那样,default_scope通常比它的价值更麻烦。如果您想坚持下去,可以使用reorder忽略之前的订单:

scope :ranking, reorder("ranking DESC")

答案 1 :(得分:-1)

不确定为什么@TimPost删除了我的答案,但是我正在使用rails 3.0.5和ruby 1.9.2进行项目,当我使用重新排序(它工作顺便说一句)时,它会在日志中说明这一点

DEPRECATION WARNING:不推荐重新订购。请使用except(:order).order(...)来代替。 (来自<class:Item>

所以我认为这是不公平的,我的答案被删除了,我得到了一个糟糕的回应