[RUBY] [Trier] Trier en suivant un utilisateur, suivant un suiveur, dans l'ordre d'être suivi (ordre décroissant)!

Aperçu

Un mémorandum est enregistré lorsqu'un utilisateur est suivi, suivi d'un suiveur, et trié dans l'ordre d'être suivi (ordre décroissant).

environnement

・ Rubis '2.5.7' ・ Rails '5.2.3'

supposition

-La fonction de suivi utilisateur a déjà été implémentée.

【référence】 Chapitre 14 Follow Users - Rails Tutorial

processus

1. Confirmation de la mise en œuvre

"Suivre un utilisateur (" @ user), trier les abonnés ( @ users``) dans l'ordre dans lequel ils ont été suivis (décroissant) (ʻorder (" relations.created_at DESC ") `)"

Faisons un code concret!

2. Définir les actions suivantes, suiveurs

Définissez les actions suivantes et suiveuses dans users_controller.

controllers/users_controller.rb


class UsersController < ApplicationController
(réduction)

  def following
    @title = "Suivre"
    @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 = "Disciple"
    @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

(réduction)
end

Je vais vous expliquer le code dans l'ordre! (Seule l'action suivante sera expliquée)

① Remplacez l'utilisateur affiché dans @ user = User.find (params [: id]) '' par @ user``.

② Dans get_follower_user_ids = Relationship.where (follower_id: @ user.id) .pluck (: follow_id), remplacez l'id de l'utilisateur suivi de @ user '' par get_follower_user_ids ''.

@users = User.includes (: passive_relationships) .where (id: get_follower_user_ids) .order ("Relationships.created_at DESC"). Paginate (page: params [: page]) @ user Attribuez les utilisateurs suivis de `` @ users ''.

Ici, vous pouvez faire référence au modèle de relation en définissant ʻincludes (: passives_relationships) , et vous pouvez trier par ʻorder (" relation_created_at DESC ") .

résultat

Vous pouvez désormais trier les abonnés, les abonnés et les abonnés par ordre décroissant!

Recommended Posts

[Trier] Trier en suivant un utilisateur, suivant un suiveur, dans l'ordre d'être suivi (ordre décroissant)!
Trier la liste par ordre décroissant en Java et générer une nouvelle liste de manière non destructive
Trier ArrayList en faisant glisser et en déposant ItemTouchHelper