[RUBY] So implementieren Sie Ranking-Funktionen in Rails

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.

In Kombination mit der Paginierungsfunktion von Kaminari funktioniert dies nicht!

@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. スクリーンショット 2020-08-04 16.58.47.png

Daher werden wir die Ranking-Funktion einführen, die problemlos mit der Seitenmethode kombiniert werden kann.

Annahme

Implementierung der Ranking-Funktion

@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])

Verweise

Recommended Posts

So implementieren Sie Ranking-Funktionen in Rails
So implementieren Sie Suchfunktionen in Rails
[Rails] So implementieren Sie Scraping
So implementieren Sie die Gastanmeldung in 5 Minuten im Rails-Portfolio
So implementieren Sie eine nette Funktion in Ajax mit Rails
Führen Sie devise with Rails ein, um Benutzerverwaltungsfunktionen zu implementieren
So installieren Sie jQuery in Rails 6
[Rails] So implementieren Sie die Sternebewertung
So installieren Sie Swiper in Rails
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
So ändern Sie den App-Namen in Rails
So fügen Sie ein Video in Rails ein
Verwendung von MySQL im Rails-Tutorial
So erzwingen Sie Codierungskonventionen in Java
[Rails] So konfigurieren Sie das Routing in Ressourcen
So implementieren Sie die Image-Veröffentlichung mithilfe von Schienen
So implementieren Sie die asynchrone Verarbeitung in Outsystems
Verwendung von credentials.yml.enc aus Rails 5.2
Wie schreibe ich Rails
So deinstallieren Sie Rails
Markdown in Rails implementiert
Wie man Rails allgemein ins Japanische übersetzt
[Rails] So implementieren Sie einen Unit-Test eines Modells
So trennen Sie .scss nach Controller in Rails
So fügen Sie die html.erb-Klasse in Rails bedingt hinzu
So erstellen Sie einfach ein Pulldown mit Rails
Verwendung von JQuery in Rails 6 js.erb
So implementieren Sie optimistisches Sperren in der REST-API
[Rails] Verwendung von PostgreSQL in einer Vagrant-Umgebung
So überprüfen Sie Rails-Befehle im Terminal
So implementieren Sie Paginierung in GraphQL (für Ruby)
So implementieren Sie eine Diashow mit Slick in Rails (einzeln und mehrfach nacheinander)
Implementieren Sie die Anwendungsfunktion in Rails
So implementieren Sie UICollectionView mit Code nur in Swift
[Schienen] Wie poste ich Bilder?
So stellen Sie die Anzeigezeit in Rails auf japanische Zeit ein
[Ruby on Rails] Wie schreibe ich eine Enumeration auf Japanisch?
[Rails] Verwendung von Enum
[Rails, JS] So implementieren Sie die asynchrone Anzeige von Kommentaren
[Rails] Verwendung von Enum
Wie man Schienenrouten liest
Implementieren Sie die LTI-Authentifizierung in Rails
[Ruby On Rails] So setzen Sie die Datenbank in Heroku zurück
Verwendung von Rails Join
[So fügen Sie ein Video mit Rails in haml ein]
So schreiben Sie eine Datumsvergleichssuche in Rails
So beenden Sie den Rails-Server