Ich habe zwei Modelle, eine User
und eine Exercise
wo ein Benutzer has_many :exercises
. Es gibt einen cache_counter auf dem Modell User
, exercise_count
Abfrage verschachtelte Anzahl
Ich möchte eine Rangliste basierend auf einer Trainingsanzahl des Benutzers im aktuellen Monat erstellen. Ich möchte die 2 Benutzer mit den höchsten Trainingszählungen des Monats zusammen mit der Zählung anzeigen. Wenn es andere Benutzer gibt, die die gleiche Trainingsanzahl wie der zweite Benutzer haben, möchte ich sie auch anzeigen. (Display 2+ Benutzer)
Die aktuelle Abfrage Ich habe,
# 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
das oben 2+ Benutzerobjekt für alle Zeit zurückzukehren. Ich möchte dies auf den aktuellen Monat beschränken.
Ich landete mit dem Wesen dieser Antwort und erstellt auf dem Übungsmodell einen Umfang genießen durch zu begrenzen Monat, dann erstellt ein Array von Benutzern durch diese zählt und die Top-Benutzer von dort ausgewählt – Andy