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.
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
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
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
~.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é».
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