Avec 7 mois d'expérience en programmation, je ne sais toujours pas à droite ou à gauche. Lors de la réalisation du devoir, il y avait une condition selon laquelle "* Veuillez définir de telle sorte que seuls les affiches * puissent modifier et supprimer." Il est dit qu'il est ** interdit de taper directement ** (car vous pouvez modifier les messages d'autres personnes par ** directement ** https: /// XXX / modifier ** dans l'URL, ... ?).
Après un certain temps, il était temps de créer un portfolio, et il s'est avéré que je pouvais le frapper directement après qu'il soit terminé. Je l'ai oublié par inadvertance, alors j'enregistrerai la méthode d'interdiction de la frappe directe dans un mémorandum.
Si vous n'êtes pas connecté, vous ne pouvez pas juger * "Affiches uniquement" *, alors comment faire des applications et des pages d'accueil qui n'ont pas de fonction de connexion? Il sera étudié et appris dans le futur. (Au fait, il y avait une entreprise qui était en difficulté car elle me conduisait directement sur le site de réservation ...)
Quoi qu'il en soit, même s'il est facile d'interdire les coups directs, c'est une fonctionnalité à ne pas oublier, car elle peut être assez difficile à oublier!
Tout d'abord, ajoutez la méthode before_action à application_controller.
application_controller.rb
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
Ensuite, ouvrez la page du contrôleur dans laquelle vous souhaitez interdire les frappes directes. (Par exemple, si la page de publication est nommée Post, post_controller.rb)
post_controller.rb
class PostsController < ApplicationController
before_action :authenticate_user!
before_action :correct_post,only: [:edit,:XXX]
Au fait, before_action: authenticate_user! Ne peut être utilisé que par les utilisateurs connectés! est ce que cela signifie.
Before_action: correct_post, uniquement: Ajouter [: edit,: XX]. : XX ajoute d'autres actions que vous ne voulez pas toucher directement.
Ajoutez également le code suivant sous le même post_controller.rb (ci-dessus privé).
post_controller.rb
def correct_post
@post = Post.find(params[:id])
unless @post.user.id == current_user.id
redirect_to posts_path
end
end
Pour redirect_to posts_path, veuillez décrire la destination du lien à ignorer si quelqu'un d'autre que l'affiche le frappe directement. Avec ce qui précède, je pense que la frappe directe peut être interdite!
Au fait, il y a current_post car il est similaire à correct_post. Grâce à cela, je me suis trompé dans la tête, et j'écris un code qui interdit les frappes directes, donc je ne peux pas l'interdire! Je tenais ma tête pendant quelques minutes.
C'est également un point auquel il faut faire attention.
Recommended Posts