[RUBY] [Rails6] So verbinden Sie die von Scaffold generierte Buchungsfunktion mit der von devise generierten Benutzerfunktion

Einführung

Ich wollte eine Artikel-Posting-App mit Rails erstellen, und als ich Scaffold einführte, um das Verfahren zu verkürzen, stolperte ich über das Verbinden von Posts und Benutzern, sodass ich mein Wissen teilte Wenn Sie mehr wissen möchten, lesen Sie bitte dieses Dokument.

Vorbereitung

Postfunktionsgenerierung mit Scaffold

Generieren Sie zunächst eine Buchungsfunktion mit Scaffold. Wahnsinnig einfach. db: migrieren Vergiss nicht

$ rails g scaffold Post content:string
$ db:migrate

devise Siehe diesen Artikel. Sehr leicht zu verstehen

Verknüpfen

gehört zu und hat viele

app/models/user.rb


class User < ApplicationRecord

  #Fügen Sie Folgendes hinzu.Vergessen Sie nicht den Plural s
  has_many :posts,  dependent: :destroy
end

app/models/post.rb


class Tip < ApplicationRecord
  #Fügen Sie Folgendes hinzu.Stellen Sie aus Sicherheitsgründen sicher, dass leere Beiträge abgelehnt werden
  belongs_to :user
  validates :content, presence: true
end

Fügen Sie die Spalte user_id hinzu

$ rails g migration add_user_id_to_posts user_id:integer
$ rails db:migrate

*** Dies vervollständigt die Verbindung zwischen dem Benutzermodell und dem Post-Modell in Bezug auf den Mechanismus ***

Zum Controller hinzugefügt

app/controllers/posts_controller.rb


  private
    # Use callbacks to share common setup or constraints between actions.
    def set_post
      @post = Post.find(params[:id])
    end

    # Only allow a list of trusted parameters through.
    def post_params
      params.require(:post).permit(:content)
    end
end

Ändern Sie den oben von Scaffold automatisch generierten Code wie folgt.

app/controllers/posts_controller.rb


  private
    # Use callbacks to share common setup or constraints between actions.
    def set_post
      @post = Post.find(params[:id])
    end

    # Only allow a list of trusted parameters through.
    def post_params
      params.require(:post).permit(:content).merge(user_id: current_user.id)
    end
end

Damit ist der Vorgang abgeschlossen. Lass es uns laufen, gehe zu localhost: 3000 / posts und poste! ‼

Recommended Posts

[Rails6] So verbinden Sie die von Scaffold generierte Buchungsfunktion mit der von devise generierten Benutzerfunktion
[Rails] So erhalten Sie die aktuell mit devise angemeldeten Benutzerinformationen
So machen Sie https zum Schema der URL, die vom URL-Helfer von Rails generiert wurde
[Rails] So bestimmen Sie das Ziel anhand von "Rails-Routen"
So verbinden Sie die Zeichenfolgen in der Liste durch Kommas getrennt
[Mit Backtricks] So stellen Sie React to the simple Rails vor
[Rails] So zeigen Sie eine Liste der Beiträge nach Kategorie an
[Rails] Wie man Edelstein "devise" benutzt
[Schienen] Verwendung von Geräten (Hinweis)
Stellen Sie mit dem iPhone eine Verbindung zum Rails-Server her
So fügen Sie die Löschfunktion hinzu
[Rails] Wie man Kaminari mit Slim einführt und das Design ändert
Ich habe versucht, die Bildvorschau mit Rails / jQuery zu implementieren
Verwendung von MinIO mit derselben Funktion wie S3 Verwenden Sie Docker-Compose
[Rails 5] Anzeigen des Bildschirms zum Ändern des Kennworts bei Verwendung von devise
So dekorieren Sie CSS auf Rails6 form_with (Hilfs-) Optionsfeldern
[Ruby on Rails] So melden Sie sich nur mit Ihrem Namen und Passwort mit dem Gem-Gerät an
[Schienen] Verwendung der Kartenmethode
So greifen Sie mit der TCP-Funktion von Spring Integration direkt auf Socket zu
So aktualisieren Sie Benutzeränderungen in Rails Devise, ohne ein Kennwort einzugeben
[Rails] Verwenden Sie devise, um Informationen zum aktuell angemeldeten Benutzer abzurufen
So implementieren Sie TextInputLayout mit Validierungsfunktion
Wie man nur die Zeit mit Rails vergleicht (von welcher Zeit bis zu welcher Zeit, so etwas wie)
So behandeln Sie Anmeldefehler mit devise
[Hinweis] Verwendung von Rails 6 Devise + Cancancan
[Verarbeitung × Java] Verwendung der Funktion
So implementieren Sie die Image-Veröffentlichung mithilfe von Schienen
[Rails] So wenden Sie das in der Hauptanwendung verwendete CSS mit Administrate an
[Rails] Wie man Geräte ins Japanische übersetzt
So implementieren Sie die E-Mail-Authentifizierungsfunktion zum Zeitpunkt der Benutzerregistrierung
So erstellen Sie eine Rails 6-Umgebung mit Docker
[Rails] Lesen der vom Bildschirm hochgeladenen XML-Datei im Hash-Typ
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
[Schienen] So registrieren Sie mehrere Datensätze in der Zwischentabelle mit einer Zuordnung von vielen zu vielen
[Rails] So bedienen Sie die in der Hauptanwendung verwendete Hilfsmethode mit Administrate
[Rails] Implementierungsverfahren, wenn der Buchungsfunktion öffentliche / private Funktionen hinzugefügt werden
Der Weg zur Japanisierung von Rails führt zu Fehlermeldungen
Verwenden Sie [Rails], um eine Gastbenutzerfunktion zu entwickeln (für das Portfolio).
Verwendung von Schienen g Gerüst, Funktionen, Vorsichtsmaßnahmen
Buchungsfunktion implementiert durch asynchrone Kommunikation in Rails
So geben Sie die von Rails erstellte CSV in S3 aus
So implementieren Sie die Brotkrumenfunktion mit gretel
[Für Anfänger] So implementieren Sie die Löschfunktion
Code zum Verbinden von Rails 3 mit PostgreSQL 10
So trennen Sie .scss nach Controller in Rails