2016-12-19 1 views
0

私はモデルPostを持っています。私はname'esa'であり、次にupdated_atで注文する最初の投稿を表示したいと思います。いくつかの値に基づいてRails default_scope

私はpost.rbでこれを試みたが、動作しません:

かなり醜いだろう
default_scope {Post.where(name: 'esa') && order(updated_at: :desc) } 
+1

'default_scope'はしばしば推奨されず、この使用法はさらに奇妙です。あなたは 'posts'テーブルへのすべてのリクエストをこのようにフィルタリングして注文したいと思っていますか? – ndn

答えて

0

が、ここにあります。

default_scope do 
    order("CASE WHEN name = 'esa' THEN 0 ELSE 1 END").order(updated_at: :desc) 
end 
+0

これは、名前がesaで、他の投稿ではない投稿を表示しています。 –

+0

@ Nda.Sこれはクエリーが動作する方法なので、あなたの条件に合った項目のコレクションを返します。 –

+0

@AndreyDeineko私は最初の投稿を名前esaで表示したいと思っています。そして、他の投稿はupdated_atで注文しました –

関連する問題