Mon nom est yuki. Grâce à DMMWEBCAMP, je travaille maintenant en tant qu'ingénieur WEB, rassemblant mes amis pour développer des services, enseignant la programmation en tant que tuteur et profitant de ma vie d'ingénieur au quotidien.
Nous fournissons également une assistance et des questions d'erreur pour ceux qui visent des inexpérimentés, donc si vous êtes intéressé, veuillez contacter DM.
Cette fois, j'expliquerai la fonction qui empêche les autres de modifier vos propres messages, ce qui est courant dans les applications CRUD avec fonction d'authentification.
Implémentation d'une fonction de redirection vers une page de liste etc. si l'affiche et l'éditeur sont différents lors de la saisie de l'URL pour éditer l'article en solide
# post/1/Entrez une URL telle que modifier
#Si l'affiche et l'éditeur sont différents/Rediriger vers les messages
"Lorsque vous essayez de modifier le message de quelqu'un d'autre, redirigez-le" signifie que lorsque vous essayez de le modifier, vous devez ** appeler cette fonction **. Tout d'abord, créons une situation dans laquelle un certain processus peut être lu lors d'une tentative de modification ou de mise à jour.
posts_controller.rb
class PostssController < ApplicationController
before_action :correct_user, only: [:edit, :update]
#Omission
def edit
@book = Post.find(params[:id])
end
end
before_action
est expliqué d'une manière facile à comprendre dans cet article. En d'autres termes, la méthode spécifiée est toujours exécutée avant l'action spécifiée.
Cette fois, avant de modifier et de mettre à jour ... correct_user
... c'est-à-dire que nous appelons une méthode qui vérifie l'utilisateur correct.
posts_controller.rb
#Omission
private
def correct_user
@post = Post.find(params[:id]) #Identifier le message en fonction de son identifiant
@user = @post.user #Identifier l'utilisateur associé à la publication identifiée et@Mettre en utilisateur
if current_user != @user #Avec l'utilisateur actuellement connecté (éditeur)@Si l'utilisateur (l'affiche) est différent
redirect_to posts_path #Rediriger vers la page de liste
end
end
Comme je l'ai écrit dans le commentaire, cela ressemble à ceci.
Puisqu'il y avait de nombreux articles qui pouvaient être implémentés en collant ceci, j'ai essayé de résumer "pourquoi cela arrive". Nous espérons pour votre référence.