Zuvor habe ich die Ranking-Funktion unter Bezugnahme auf diesen Artikel von Qiita implementiert ( Einfache Ranking-Funktion in Rails ). war. Ich konnte es erfolgreich implementieren, hatte aber die folgenden Probleme.
@posts = Post.find(Like.group(:post_id).order('count(post_id) desc').pluck(:post_id)).page(params[:page])
In Kombination mit der Seitenmethode von kaminari ist dies wie oben beschrieben, dies führt jedoch zu folgendem Fehler.
Daher werden wir die Ranking-Funktion einführen, die problemlos mit der Seitenmethode kombiniert werden kann.
@posts = Post.joins(:likes).group(:post_id).order('count(post_id) desc')
Das ist in Ordnung! Ich werde eins nach dem anderen erklären.
Post.joins(:likes) #Inner verbinden die Beiträge und mag Tabellen
group(:post_id) #post_Teilen Sie Gruppen in Gruppen mit derselben ID ein
order('count(post_id) desc') #Veröffentliche es_Sortieren Sie in absteigender Reihenfolge der ID
Damit ist die Rangfolgefunktion abgeschlossen. Wie unten gezeigt, verursacht das Hinzufügen der Seitenmethode am Ende des Codes keinen Fehler, und ich denke, dass die Funktion der Seitennation funktioniert.
@posts = Post.joins(:likes).group(:post_id).order('count(post_id) desc').page(params[:page])
Recommended Posts