2

私はこのモデルを持っています

ユーザー.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を取得します

誰かが理由を説明できますか?

このモデルを使用するすべてのコントローラーから 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 を使用しています。

非推奨警告: 再注文は非推奨です。代わりに except(:order).order(...) を使用してください。(から呼び出されます<class:Item>

だから、私の回答が削除されて、くだらない回答にうんざりしたのは公平ではないと思います

于 2011-04-26T22:46:11.357 に答える