Ruby on Rails - Aktive Datensätze
Rails Active Record ist die ORM-Ebene (Object / Relational Mapping), die mit Rails geliefert wird. Es folgt genau dem Standard-ORM-Modell, das wie folgt lautet:
- Tabellen sind Klassen zugeordnet,
- Zeilen werden Objekten und zugeordnet
- Spalten werden Objektattributen zugeordnet.
Rails Active Records bieten eine Schnittstelle und Bindung zwischen den Tabellen in einer relationalen Datenbank und dem Ruby-Programmcode, der Datenbankdatensätze bearbeitet. Ruby-Methodennamen werden automatisch aus den Feldnamen von Datenbanktabellen generiert.
Jedes Active Record-Objekt verfügt über CRUD (Create, Read, Update und Delete) Methoden für den Datenbankzugriff. Diese Strategie ermöglicht einfache Entwürfe und einfache Zuordnungen zwischen Datenbanktabellen und Anwendungsobjekten.
Übersetzen eines Domänenmodells in SQL
Das Übersetzen eines Domänenmodells in SQL ist im Allgemeinen unkompliziert, solange Sie sich daran erinnern, dass Sie Rails-freundliches SQL schreiben müssen. In der Praxis müssen Sie bestimmte Regeln befolgen -
Jede Entität (z. B. Buch) erhält eine Tabelle in der nach ihr benannten Datenbank, jedoch im Plural (Bücher).
Jede solche Entity-Matching-Tabelle hat ein Feld namens id , das eine eindeutige Ganzzahl für jeden in die Tabelle eingefügten Datensatz enthält.
Wenn Entität x und Entität y zur Entität x gehören, hat die Tabelle y ein Feld mit dem Namen x_id.
Der Großteil der Felder in einer Tabelle speichert die Werte für die einfachen Eigenschaften dieser Entität (alles, was eine Zahl oder eine Zeichenfolge ist).
Aktive Datensatzdateien (Modelle) erstellen
Geben Sie den folgenden Befehl auf der obersten Ebene des Anwendungsverzeichnisses ein, um die im vorherigen Kapitel vorgestellten Active Record-Dateien für unsere Entitäten für Bibliotheksanwendungen zu erstellen.
library\> rails script/generate model Book
library\> rails script/generate model Subject
Über rails generate model book Befehle generiert den Auto-Code wie folgt -
Sie weisen den Generator an, Modelle mit den Namen "Buch" und "Betreff" zu erstellen, um Instanzen von Büchern und Themen zu speichern. Beachten Sie, dass Sie Buch und Betreff groß schreiben und die Singularform verwenden. Dies ist ein Rails-Paradigma, dem Sie bei jeder Erstellung eines Modells folgen sollten.
Wenn Sie das Generierungswerkzeug verwenden, erstellt Rails die eigentliche Modelldatei, die alle für das Modell spezifischen Methoden und die von Ihnen definierten Geschäftsregeln enthält, eine Komponententestdatei für die Durchführung einer testgetriebenen Entwicklung und eine zu verwendende Beispieldatendatei (sogenannte Fixtures) mit den Komponententests und einer Rails-Migration, die das Erstellen von Datenbanktabellen und -spalten vereinfacht.
Neben dem Erstellen vieler anderer Dateien und Verzeichnisse werden dadurch Dateien mit dem Namen erstellt book.rb und subject.rb mit einer Skelettdefinition in der app/models Verzeichnis.
Inhalt verfügbar in book.rb -
class Book < ActiveRecord::Base
end
Inhalt verfügbar in subject.rb -
class Subject < ActiveRecord::Base
end
Assoziationen zwischen Modellen erstellen
Wenn Ihre Schienenanwendung mehr als ein Modell enthält, müssen Sie eine Verbindung zwischen diesen Modellen herstellen. Sie können dies über Assoziationen tun. Active Record unterstützt drei Arten von Assoziationen:
one-to-one- Eine Eins-zu-Eins-Beziehung besteht, wenn ein Artikel genau einen anderen Artikel hat. Zum Beispiel hat eine Person genau einen Geburtstag oder ein Hund hat genau einen Besitzer.
one-to-many- Eine Eins-zu-Viele-Beziehung besteht, wenn ein einzelnes Objekt Mitglied vieler anderer Objekte sein kann. Zum Beispiel kann ein Thema viele Bücher haben.
many-to-many - Eine Viele-zu-Viele-Beziehung besteht, wenn das erste Objekt mit einem oder mehreren eines zweiten Objekts verknüpft ist und das zweite Objekt mit einem oder mehreren der ersten Objekte verknüpft ist.
Sie geben diese Zuordnungen an, indem Sie Ihren Modellen Deklarationen hinzufügen: has_one, has_many, gehört zu und has_und_belongs_to_many.
Jetzt müssen Sie Rails mitteilen, welche Beziehungen Sie innerhalb des Bibliotheksdatensystems herstellen möchten. Ändern Sie dazu book.rb und subject.rb so -
class Book < ActiveRecord::Base
belongs_to :subject
end
Wir haben im obigen Beispiel ein einzelnes Thema verwendet, da ein Buch zu einem einzelnen Thema gehören kann.
class Subject < ActiveRecord::Base
has_many :books
end
Wir haben hier mehrere Bücher verwendet, da ein Fach mehrere Bücher haben kann.
Implementieren von Validierungen an Modellen
Die Implementierung der Validierungen erfolgt in einem Rails-Modell. Die Daten, die Sie in die Datenbank eingeben, werden im tatsächlichen Rails-Modell definiert. Daher ist es nur sinnvoll zu definieren, welche gültigen Daten sich am selben Speicherort befinden.
Die Validierungen sind -
- Der Wert des Titelfelds sollte nicht NULL sein.
- Der Wert des Preisfelds sollte numerisch sein.
Öffnen book.rb in dem app\model Unterverzeichnis und setzen Sie die folgenden Validierungen -
class Book < ActiveRecord::Base
belongs_to :subject
validates_presence_of :title
validates_numericality_of :price, :message=>"Error Message"
end
validates_presence_of - schützt "NOT NULL" -Felder vor fehlenden Benutzereingaben.
validates_numericality_of - Verhindert, dass der Benutzer nicht numerische Daten eingibt.
Neben den oben genannten Validierungen gibt es noch andere gängige Validierungen. Überprüfen Sie die Rails-Kurzanleitung .
Was kommt als nächstes?
Im nächsten Kapitel lernen wir die Rails-Migration kennen, mit der Sie Ruby verwenden können, um Änderungen an Ihrem Datenbankschema zu definieren. So können Sie mithilfe eines Versionskontrollsystems die Dinge mit dem tatsächlichen Code synchronisieren.