我有兩個模型,一個User
和一個Exercise
,其中一個用戶has_many :exercises
。 User
模型上有一個cache_counter,exercise_count
查詢嵌套計數
我想根據用戶在當月的運動計數製作排行榜。我想顯示具有該月份的最高鍛鍊次數以及計數的2個用戶。如果還有其他用戶與我想要顯示的第二位用戶具有相同的練習計數。 (顯示2+用戶)
當前查詢我有,
# User model
scope :exercises_this_month, -> { includes(:exercises).references(:exercises)
.where("exercise_count > ? AND exercises.exercise_time > ? AND exercises.exercise_time < ?",
0 , Time.now.beginning_of_month, Time.now.end_of_month)
}
def User.leaders
limit = User.exercises_this_month.where("exercise_count > ?", 0).order(exercise_count: :desc).second.exercise_count
User.exercises_this_month.where("exercise_count > ? AND exercise_count >= ?", 0, limit)
end
將返回頂部2+用戶對象爲所有的時間。我想限制到當前月份。
最後我用這個答案的精髓,創造了在運動模式通過限制一個範圍月,然後通過這些計數創建一個用戶數組,並從那裏選擇頂級用戶 – Andy