Validierungen und Abfragen
Datenintegrität und Abfragen
Validierungen und Abfragen ist eine kostenlose Ruby Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ruby Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum validieren?
Validierungen schützen Ihre Daten, bevor sie die Datenbank erreichen. Sie werden beim Speichern eines Datensatzes ausgeführt und lehnen ungültige Daten mit hilfreichen Meldungen ab.
- Sie halten fehlerhafte Daten fern, etwa fehlende Namen oder falsch formatierte E-Mail-Adressen.
- Sie werden in Ruby ausgeführt, daher lassen sich Meldungen leicht für Benutzer anzeigen.
- Sie ergänzen Datenbankeinschränkungen, ersetzen sie aber nicht.
Validierung auf Vorhandensein
Die häufigste Regel ist validates :field, presence: true. Sie verlangt einen nicht leeren Wert. Ein Speichervorgang ohne diesen Wert schlägt fehl und zeichnet einen Fehler auf.
class User < ApplicationRecord
validates :name, presence: true
end
# User.create(name: "") fails to saveValidierung auf Eindeutigkeit
uniqueness: true verhindert doppelte Werte, etwa wenn zwei Benutzer dieselbe E-Mail-Adresse haben. Kombinieren Sie dies mit einem eindeutigen Datenbankindex, da die Validierung allein bei hoher Nebenläufigkeit eine Race Condition aufweist.
class User < ApplicationRecord
validates :email, presence: true, uniqueness: true
endFormat und Länge
Weitere integrierte Validatoren:
length: { minimum: 8 }für Größenbeschränkungen.format: { with: /regex/ }für Muster.numericality: truefür Zahlen.inclusion: { in: [...] }für zulässige Werte.
class User < ApplicationRecord
validates :password, length: { minimum: 8 }
validates :age, numericality: { greater_than: 0 }
endvalid? und errors
Rufen Sie valid? auf, um Validierungen ohne Speichern auszuführen. Nach einem fehlgeschlagenen Speichervorgang enthält record.errors die Probleme, und errors.full_messages liefert lesbare Zeichenfolgen für die Benutzeroberfläche.
user = User.new(name: "")
if user.valid?
user.save
else
puts user.errors.full_messages
endsave im Vergleich zu save!
Zwei Arten zu speichern:
savegibttrue/falsezurück, sodass Sie abhängig vom Ergebnis einen entsprechenden Zweig ausführen können.save!löst bei einem FehlerRecordInvalidaus. Das ist nützlich, wenn ungültige Daten eine Ausnahme darstellen sollen.
Dasselbe Muster gilt für create/create! und update/update!.
user.save # => false if invalid
user.save! # => raises if invalidBenutzerdefinierte Validierungen
Für Regeln, die über die integrierten Validatoren hinausgehen, schreiben Sie eine Methode und registrieren Sie sie mit validate. Fügen Sie Probleme über errors.add hinzu.
class User < ApplicationRecord
validate :name_not_admin
def name_not_admin
if name == "admin"
errors.add(:name, "cannot be admin")
end
end
endAbfragen mit where
Die Abfrageschnittstelle beginnt mit where, das Zeilen filtert. Es gibt eine lazy Relation zurück, die Sie weiter verketten können, bevor sie auf die Datenbank zugreift.
User.where(active: true)
User.where("age > ?", 18)
User.where(role: ["admin", "editor"])Sortieren und Begrenzen
Gestalten Sie Ergebnisse mit verkettbaren Methoden:
order(created_at: :desc)sortiert.limit(10)undoffset(20)dienen zur Seitennavigation.select(:id, :name)wählt Spalten aus.
User.where(active: true)
.order(created_at: :desc)
.limit(10)Aggregationen und Lazy Loading
Aggregations-Hilfsmethoden führen Datenbankfunktionen aus: count, sum(:amount), average(:age), maximum, minimum. Relationen sind lazy; die Abfrage wird erst ausgeführt, wenn Sie die Relation durchlaufen, eine Aggregation aufrufen oder to_a verwenden.
User.where(active: true).count
Order.sum(:total)
User.average(:age)Scopes
Ein Scope gibt einer wiederverwendbaren Abfrage einen Namen, sodass Sie sie übersichtlich zusammensetzen können. Scopes geben Relationen zurück und lassen sich miteinander sowie mit where verketten.
class User < ApplicationRecord
scope :active, -> { where(active: true) }
scope :adults, -> { where("age >= ?", 18) }
end
User.active.adultsKurze Überprüfung
Testen Sie Ihr Verständnis von Validierungen und Abfragen.
Rückblick: Validierungen und Abfragen
Sie haben gelernt, Daten zu schützen und abzurufen:
- Validierungen wie Vorhandensein, Eindeutigkeit, Länge und Format schützen Speichervorgänge.
valid?underrorsmelden Probleme;save!löst eine Ausnahme aus.- Benutzerdefinierte Validierungen decken spezielle Regeln ab.
where,order,limit, Aggregationen und Scopes bilden lazy Abfragen.
Damit ist der Kurs zu Models und Active Record abgeschlossen.
Häufig gestellte Fragen
Ist die Lektion „Validierungen und Abfragen“ kostenlos?
Ja — der vollständige Text von „Validierungen und Abfragen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ruby Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Validierungen und Abfragen“?
Datenintegrität und Abfragen Du übst Ruby Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Ruby Academy zu starten?
Keine Vorkenntnisse erforderlich. Ruby Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Validierungen und Abfragen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Ruby Academy-Lektion Code schreiben und ausführen?
Ja. Jede Ruby Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Active-Record-Grundlagen
- Migrationen
- Assoziationen
- Validierungen und Abfragen