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.
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.
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
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
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