[RUBY] Modellassoziation in Rails

Überblick

Ich denke, dass die Zuordnung zwischen Modellen die Grundlage für die Grundlagen beim Erstellen einer Anwendung sein wird, daher werde ich sie mit der Bedeutung der Überprüfung zusammenfassen.

Was ist ein Verein?

Zuordnungen zwischen Modellen sind Zuordnungen zwischen Datenbanktabellen unter Verwendung externer Schlüssel. Auf diese Weise ist es sehr bequem, die erforderlichen Daten mit einer einfachen Beschreibung aufzurufen oder verwandte Daten gleichzeitig beim Löschen von Daten zu löschen.

Eins-zu-viele-Verein

Ein typisches Beispiel für eine Assoziation scheint eine Eins-zu-Viele-Assoziation zu sein. Eins-zu-viele-Zuordnung bedeutet, dass ein Datensatz in einer Tabelle mehreren Datensätzen in einer anderen Tabelle zugeordnet ist. Beispiel: Verknüpfen Sie das Benutzermodell mit dem Post-Modell

app/models/user.rb


class User < ApplocationRecord
  has_many :posts
end

app/models/user.rb


class User < ApplocationRecord
  belongs_to :user
end

Die Verwendung der has_many-Methode bedeutet "hat viel", und die Verwendung der Gehör_to-Methode bedeutet "Zugehörigkeit zu", und die beiden Modelle sind miteinander verbunden. Im obigen Fall bedeutet dies so etwas wie "Benutzer hat viele Beiträge".

Diese Methoden haben eine Namenskonvention: Die Methode has_many verwendet die Pluralform des Modellnamens und die Methode includes_to verwendet die Singularform des Modellnamens. Geben Sie außerdem den Spaltennamen des externen Schlüssels als Modellnamen an, auf den verwiesen wird (einzelnes Formular) + \ _id. (Beispiel: Benutzer \ _id) Wenn Sie einen externen Schlüssel angeben möchten, geben Sie als Option den Schlüssel fremd an.

app/models/user.rb


class User < ApplocationRecord
  has_many posts, foreign_key: "client_id"
end

Geben Sie die Option class_name an, um den Methodennamen zu ändern. Ändern Sie es nach has_many in einen neuen Methodennamen und geben Sie den ursprünglichen Modellnamen in class_name an.

app/models/user.rb


class User < ApplocationRecord
  has_many tweets, class_name: "Post"
end

Wenn Sie die abhängige Option für has_many angeben und Folgendes angeben: destroy, wird der referenzierende Datensatz automatisch gelöscht, wenn der referenzierte Datensatz gelöscht wird.

app/models/user.rb


class User < ApplocationRecord
  has_many posts, dependent: :destroy

Was Sie durch Assoziieren tun können

Wenn das Modell verwandt ist, können die Referenzquellendaten mit der folgenden Beschreibung abgerufen werden.

example


@posts = @user.posts

Die Methoden, die mit has_many verwendet werden können, können aggregierte Methoden und Abfragemethoden verwenden.

example


@posts = @user.posts.count
@posts = @user.posts.order("")

Wenn Sie festlegen möchten, dass die Daten einer Referenz zugeordnet werden, können Sie sie mithilfe der Erstellungsmethode zuordnen. Sie können auch Modellattribute als Argumente angeben.

example


@user.posts.build(name: "taro")

Wenn Sie << schreiben, können Sie den Datensatz sogar speichern.

example


@user.posts << @post

Zusammenfassung

Ich konnte die Assoziation zwischen den Modellen, einschließlich der Bedeutung einer Überprüfung, erneut bestätigen. Es ist immer noch ein grundlegender Teil, und es gibt Eins-zu-Eins- und Viele-zu-Viele-Assoziationen, daher möchte ich es bei einer anderen Gelegenheit zusammenfassen.

Recommended Posts

Modellassoziation in Rails
[Rails] Model Association (Vereinigung)
Group_by in Rails
Hinzufügen von Spalten in Rails
Deaktivieren Sie Turbolinks in Schienen
^, $ im regulären Ausdruck von Rails
Verwenden Sie Bilder mit Schienen
Migration in Schienen verstehen
Ruby On Rails Association
Teilen Sie route.rb in Rails6
Markdown in Rails implementiert
Migrationsfehler nach Activerecord-Zuordnung in der Rails5 + Docker-Umgebung
[Rails] Holen Sie sich UserAgent auf den Controller
Implementieren Sie die Anwendungsfunktion in Rails
Deklarative Transaktion in Rails #ginzarb
Japanisieren Sie mit i18n mit Rails
Schienen g Modell Gesamtdurchfluss
Implementieren Sie die LTI-Authentifizierung in Rails
Informationen zum Benennen von Rails-Modellmethoden
Edelstein oft in Schienen verwendet
Monatskalender in Rails anzeigen
Verwenden Sie mehrere Kontrollkästchen in Rails6!
Rails: Erfassen Sie reguläre Ausdrücke in E-Mails!
[Rails] Einstellung des Sitzungszeitlimits im Gerät
Aktivieren Sie jQuery und Bootstrap in Rails 6 (Rails 6).
[Rails] Unerwarteter Validierungsfehler im Gerät
Über das Symbol <%%> in Rails erb
[Rails] Verwenden Sie Cookies im API-Modus
Implementieren Sie eine einfache Anmeldefunktion in Rails
Erstellen Sie eine neue App mit Rails
Ruby on Rails Japanisch-Englisch kompatibler i18n
Namenskonventionen für Schienenmodelle und Tabellen
[Lösung] Webpacker :: Manifest :: MissingEntryError in Rails
Implementieren Sie ein Kontaktformular in Rails
Entfernen Sie "Assets" und "Turbolinks" in "Rails6".
CRUD-Funktion und MVC in Rails
So installieren Sie jQuery in Rails 6
So benennen Sie ein Modell mit externen Schlüsseleinschränkungen in Rails um
Hinzufügen der ersten Paginierungsfunktion in Schienen
Daten sind nicht in Rails registriert.
[Rails 6] Passen Sie Bootstrap in der Rails + Bootstrap 5.0.0-Alpha-Umgebung an
Implementieren Sie die CSV-Download-Funktion in Rails
Hinweise zum Generieren von Dummy-Daten für Kennwörter im Unit-Testcode des Rails-Modells
Ruby-Methoden, die häufig in Rails verwendet werden
So installieren Sie Swiper in Rails
So debuggen Sie die Verarbeitung im Ruby on Rails-Modell nur mit der Konsole
So implementieren Sie Suchfunktionen in Rails
Andere Definitionen als die sieben grundlegenden Aktionen in Rails
[Rails] Funktionseinschränkungen im Gerät (Login / Logout)
So ändern Sie den App-Namen in Rails
[Rails] Unit-Testcode für das Benutzermodell