[Ruby on rails] Implémentation d'une fonction similaire

introduction

Implémentation d'une fonction similaire afin que les autres utilisateurs puissent aimer l'application de publication. Supposons que vous ayez une table des utilisateurs, une table des publications et une table des likes.

association

Tout d'abord, considérez la relation entre chaque table et définissez l'association. ** Utilisateur (1): J'aime (beaucoup) ** ** Message (1): J'aime (beaucoup) ** Je veux également le valider une fois par personne et par message car je veux le faire ** comme **.

like.rb


class Like < ApplicationRecord
  belongs_to :user
  belongs_to :post

  validates_uniqueness_of :post_id, scope: :user_id

end

Si le message est supprimé, ** J'aime ** est également supprimé.

post.rb


has_many :likes, dependent: :destroy

user.rb


has_many :likes, dependent: :destroy

def already_liked?(post)
  self.likes.exists?(post_id: post.id)
end

Implémentation du contrôleur

likes_controller.rb


class LikesController < ApplicationController

  def create
    @like = current_user.likes.create(post_id: params[:post_id])
    redirect_back(fallback_location: root_path)
  end

  def destroy
    @post = Post.find(params[:post_id])
    @like = current_user.likes.find_by(post_id: @post.id)
    @like.destroy
    redirect_back(fallback_location: root_path)
  end

end

Paramètres de routage

routes.rb


resources :posts do
  resource :likes, only: [:create, :destroy]
end

post_likes DELETE /posts/:post_id/likes(.:format) likes#destroy POST /posts/:post_id/likes(.:format) likes#create

voir l'implémentation

~.html.erb


<% if current_user.already_liked?(post) %>
  <%= link_to post_likes_path(post), method: :delete do %>
    <i class="fas fa-heart"></i>
  <% end %>
<% else %>
  <%= link_to post_likes_path(post), method: :post do %>
    <i class="far fa-heart"></i>
  <% end %>
<% end %>
<%= post.likes.count %>    //Afficher le nombre de likes

Aimez-vous déjà current_user? S'il est «vrai, il ne sera pas aimé», et s'il est «faux, il sera aimé».

finalement

Il existe d'autres moyens d'implémenter les likes, comme l'implémentation asynchrone. J'étudie toujours, mais j'aimerais augmenter ce que je peux étudier diverses techniques. Merci d'avoir lu jusqu'au bout: sourire:

Recommended Posts

[Ruby on rails] Implémentation d'une fonction similaire
[Rails] Implémentation d'une fonction similaire
Implémentation de la fonction de connexion Ruby on Rails (Session)
[Rails] Implémentation asynchrone de la fonction similaire
[Rails] À propos de la mise en œuvre de la fonction similaire
[Ruby on Rails] Implémentation de la fonction de commentaire
Implémentation de la fonction de connexion Ruby on Rails (édition de devise)
[Rails] Ajout de la fonction de commentaire Ruby On Rails
[Ruby on Rails] Suivez l'implémentation de la fonction: bidirectionnelle
Implémentation d'une fonction similaire (Ajax)
[Rails] Implémentation de la fonction de catégorie
Ruby on Rails Implémentation de la fonction d'envoi automatique de courrier
[Rails] Implémentation de la fonction tutoriel
[Ruby on Rails] Communication asynchrone de la fonction de publication, ajax
Explication de Ruby on rails pour les débutants ⑦ ~ Implémentation Flash ~
[Rails] Implémentation de la fonction d'importation CSV
[Ruby on Rails] Introduction de la fonction de pagination
[Rails] Implémentation de la fonction de prévisualisation d'image
[Rails] Implémentation de la fonction de retrait utilisateur
[Rails] Implémentation de la fonction d'exportation CSV
[Ruby on Rails] Fonction de sortie CSV
[Ruby on Rails] DM, fonction de chat
Implémentation d'une fonction similaire en Java
[Ruby on Rails] Fonction de signet (enregistrement favori, comme): une direction
Une note sur la fonction de départ de Ruby on Rails
Mise en place de la fonction de tri des rails (affichés par ordre de nombre de like)
[Ruby on Rails] Introduction des données initiales
[Ruby on Rails] Fonction de recherche (non sélectionnée)
Rails [Pour les débutants] Implémentation de la fonction de commentaire
[Ruby on Rails] Notation japonaise de l'erreur
Explication de Ruby sur rails pour les débutants ①
[Ruby on Rails] Suppression logique (fonction de retrait)
Implémentation de la fonction de recherche
Principes de base de Ruby on Rails
Mise en œuvre de la fonction de pagénation
Association Ruby On Rails
[Rails] Implémentation de la fonction de recherche en utilisant le ransack de gem
Paramètres de validation pour la fonction de connexion Ruby on Rails
[Ruby on Rails] Jusqu'à l'introduction de RSpec
[Rails] Implémentation de la fonction d'agrandissement d'image à l'aide de lightbox2
Ruby on Rails ~ Principes de base de MVC et du routeur ~
[Ruby on Rails] Un mémorandum de modèles de mise en page
Ruby on Rails Comment implémenter la saisie d'adresse automatique
[Ruby on Rails] Fonction de post-édition (mise à jour, suppression)
[Ruby on Rails] Affichage individuel des messages d'erreur
Implémentation de la suppression d'ajax dans Rails
Implémentation de la fonction de recherche floue Rails
Record d'apprentissage de Ruby on rails -2020.10.03
[Rails] Implémentation de la fonction glisser-déposer (avec effet)