[RUBY] [Sortieren] Sortieren, indem Sie einem Benutzer folgen, einem Follower folgen und folgen (absteigende Reihenfolge)!

Überblick

Ein Memorandum wird aufgezeichnet, wenn einem Benutzer gefolgt wird, gefolgt von einem Follower, und in der Reihenfolge sortiert, in der er befolgt wird (absteigende Reihenfolge).

Umgebung

・ Ruby '2.5.7' ・ Schienen '5.2.3'

Annahme

-Die User Follow-Funktion wurde bereits implementiert.

【Referenz】 Kapitel 14 Follow Users --Rails Tutorial

Prozess

1. Bestätigung der Umsetzung

"Folgen Sie einem Benutzer (@ user``), sortieren Sie Follower ("@ users``) in der Reihenfolge, in der sie verfolgt wurden (absteigend) (" order ("ratios.created_at DESC") ")"

Machen wir dies zu einem konkreten Code!

2. Definieren Sie die folgenden Follower-Aktionen

Definieren Sie folgende Aktionen und Follower-Aktionen in users_controller.

controllers/users_controller.rb


class UsersController < ApplicationController
(Kürzung)

  def following
    @title = "Folgen"
    @user  = User.find(params[:id])

    get_follower_user_ids = Relationship.where(follower_id: @user.id).pluck(:followed_id)
    @users = User.includes(:passive_relationships).where(id: get_follower_user_ids).order("relationships.created_at DESC").paginate(page: params[:page])

    render 'show_follow'
  end

  def followers
    @title = "Anhänger"
    @user  = User.find(params[:id])

    get_followed_user_ids = Relationship.where(followed_id: @user.id).pluck(:follower_id)
    @users = User.includes(:active_relationships).where(id: get_followed_user_ids).order("relationships.created_at DESC").paginate(page: params[:page])

    render 'show_follow'
  end

(Kürzung)
end

Ich werde den Code der Reihe nach erklären! (Nur die folgende Aktion wird erklärt)

① Ersetzen Sie den in @ user = User.find (params [: id]) angezeigten Benutzer durch @ user.

② Ersetzen Sie in get_follower_user_ids = Relationship.where (follower_id: @ user.id) .pluck (: follow_id) die ID des Benutzers, dem @ user folgt, in get_follower_user_ids.

@users = User.includes (: passive_relationships) .where (id: get_follower_user_ids) .order ("Relationships.created_at DESC"). Paginate (Seite: params [: Seite]) `@ user`` Weisen Sie die Benutzer gefolgt von "@ Benutzer" zu.

Hier können Sie durch Festlegen von "include (: passive_relationships)" auf das Beziehungsmodell verweisen und nach "order" ("development.created_at DESC") "" sortieren.

Ergebnis

Sie können jetzt die Follower, Follower und Follower eines Benutzers in absteigender Reihenfolge sortieren!

Recommended Posts

[Sortieren] Sortieren, indem Sie einem Benutzer folgen, einem Follower folgen und folgen (absteigende Reihenfolge)!
Sortieren Sie die Liste in absteigender Reihenfolge in Java und generieren Sie zerstörungsfrei eine neue Liste
Sortieren Sie ArrayList durch Ziehen und Ablegen von ItemTouchHelper