0

フォーラムのユーザーを で並べ替えたいと思いますtotal_content_length。フォーラムでトップnライターを獲得するには、次のようにします。

User.order("total_content_length DESC").limit(n)

さて、問題は、同じ を持つ 2 人 (またはそれ以上) のユーザーがいる場合total_content_lengthです。この場合、最近投稿を作成したユーザーを優先したいと思います。

Posthaspublisher_idフィールド (これは useridです)。

これをどうしますか?

4

2 に答える 2

1

2 つの注文ステートメントを使用してみてください。

User.order("total_content_length DESC").order("created_at DESC").limit(n)

これを試して:

class User < ActiveRecord::Base
  scope :your_scope_name, joins(:posts).order("posts.created_at DESC")
end

scope次に、これを他のステートメントと組み合わせて使用​​できます

于 2011-05-22T11:47:02.687 に答える
0

User モデルで、最新の投稿の日付を提供するメソッドを定義します (投稿の関連付けがあると仮定します)。

def date_of_last_post  
  posts.order('created_at DESC').limit(1)[0].created_at  
end

次に、次のように結果を取得できます。

top_posters = User.order("total_content_length DESC").limit(n)
# write a conditional sorting algo that swaps values only 
# if a.total_content_length == b.total_content_length based on 'date_of_last_post'
于 2011-05-22T13:28:09.153 に答える