1

次/前のレコードを見つけるための同じ解決策をたくさん見ましたが、別のケースがあります。

私のデータベースにはいくつかの投稿 (6, 5, 4, 3, 2, 1) がありdefault_scopeますdefault_scope :order => 'sticky DESC' 。 2、1...)

次の投稿を次のように検索するとrecord.where('created_at > ?', @post.created_at).first、 ではなく 3 になります。nil最初に列で検索しcreated_at、次に列で並べ替えるからstickyです。

これで最初/次の投稿を見つけるにはどうすればよいdefault_scopeですか?

4

1 に答える 1

1

「次の」レコードを検索するときに、デフォルトの範囲を考慮しますか?

そうでない場合は、使用します

Post.unscoped.where(...).first

はいの場合、次のようにデフォルトのスコープを変更することを検討できます。

default_scope :order => ['sticky DESC', 'created_at ASC']

一般的な注意として、デフォルトのスコープの使用は可能な限り避けるべきです。それらは、後でメンテナンスの悪夢になる可能性があります。必要な場合にのみスコープを使用することをお勧めします。

于 2012-06-27T13:24:38.623 に答える