2016-10-20 3 views
1

レールにunscopeを使用するポイントは何ですか?例ではレールでunscopeを使用するポイント

hereは、次のコード

Article.where('id > 10').limit(20).order('id asc').unscope(:order) 

# which gives 
SELECT * FROM articles WHERE id > 10 LIMIT 20 

# and this without unscope 
SELECT * FROM articles WHERE id > 10 ORDER BY id asc LIMIT 20 

を使用しかし、なぜちょうど.order('id asc')一部削除しない:

Article.where('id > 10').limit(20) 
+1

デフォルトのスコープはどうですか? モデルにデフォルトスコープがあるとします。しかし管理者側では、このスコープは必要ありません。 –

+0

それは以来廃止されているので、http://apidock.com/rails/ActiveRecord/Base/unscoped/class –

+1

@CdotStrifeVIIを参照してください。私は[unscope](http://apidock.com/rails/ActiveRecord/QueryMethods/unscope)について話しています – kirqe

答えて

4

をしかし、なぜちょうど.order('id asc')

を削除しません私は、その1つ理由は、元のクエリにアクセスできない可能性があるため、「変更する」唯一の方法はunscopeを使用することです。例えば

Article.where('id > 10').limit(20).order('id asc') 

は非常によく、いくつかの範囲など、いくつかの外部の宝石の一部である可能性があり、そうであるとして、あなたはそれで働かなければなりません。そして、ここではunscopeが救助に来るときです。

関連する問題