Mein Name ist yuki. Dank DMMWEBCAMP arbeite ich jetzt als WEB-Ingenieur, versammle meine Freunde, um Dienstleistungen zu entwickeln, unterrichte Programmieren als Heimlehrer und genieße jeden Tag mein Ingenieurleben.
Wir bieten auch Support- und Fehlerfragen für diejenigen, die unerfahrene Personen ansprechen. Wenn Sie interessiert sind, wenden Sie sich bitte an DM.
Dieses Mal werde ich die Funktion erläutern, mit der andere Ihren eigenen Beitrag nicht bearbeiten können. Dies ist in CRUD-Apps mit Authentifizierungsfunktion üblich.
Implementierung einer Funktion zum Umleiten auf eine Listenseite usw., wenn sich das Poster und der Editor bei der Eingabe der URL zum Bearbeiten des Posts in Solid unterscheiden
# post/1/Geben Sie eine URL ein, z. B. Bearbeiten
#Wenn das Poster und der Editor unterschiedlich sind/Zu Posts umleiten
"Wenn Sie versuchen, den Beitrag eines anderen zu bearbeiten, leiten Sie ihn um" bedeutet, dass Sie beim Bearbeiten versuchen müssen, diese Funktion aufzurufen. Lassen Sie uns zunächst eine Situation erstellen, in der ein bestimmter Prozess beim Bearbeiten oder Aktualisieren gelesen werden kann.
posts_controller.rb
class PostssController < ApplicationController
before_action :correct_user, only: [:edit, :update]
#Unterlassung
def edit
@book = Post.find(params[:id])
end
end
before_action
wird in diesem Artikel leicht verständlich erklärt. Mit anderen Worten, die angegebene Methode wird immer vor der angegebenen Aktion ausgeführt.
Dieses Mal rufen wir vor dem Bearbeiten und Aktualisieren… korrigierter_Benutzer
… eine Methode auf, die nach dem richtigen Benutzer sucht.
posts_controller.rb
#Unterlassung
private
def correct_user
@post = Post.find(params[:id]) #Identifizieren Sie den Beitrag anhand der ID
@user = @post.user #Identifizieren Sie den Benutzer, der dem identifizierten Beitrag zugeordnet ist, und@Benutzer eingeben
if current_user != @user #Mit dem aktuell angemeldeten Benutzer (Editor)@Wenn der Benutzer (Poster) anders ist
redirect_to posts_path #Zur Listenseite umleiten
end
end
Wie ich im Kommentar geschrieben habe, sieht es so aus.
Da es viele Artikel gab, die durch Einfügen implementiert werden konnten, habe ich versucht, "warum es passiert" zusammenzufassen. Wir hoffen auf Ihre Referenz.
Recommended Posts