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.