Ruby Academy · leksjon

Valideringer og spørringer

Dataintegritet og spørringer

Leksjon 4 av 413 trinn

Valideringer og spørringer er en gratis leksjon i Ruby Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Ruby Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Ruby Academy inneholder totalt 4 leksjoner.

Hvorfor validere?

Valideringer beskytter dataene dine før de når databasen. De kjøres når du lagrer en post, og avviser ugyldige data med nyttige meldinger.

  • De holder ugyldige data ute (manglende navn, feilformaterte e-postadresser).
  • De kjøres i Ruby, så det er enkelt å vise meldinger til brukerne.
  • De utfyller, men erstatter ikke, databasebegrensninger.

Validering av tilstedeværelse

Den vanligste regelen er validates :field, presence: true, som krever en verdi som ikke er tom. Lagring uten denne verdien mislykkes, og en feil registreres.

class User < ApplicationRecord
  validates :name, presence: true
end

# User.create(name: "") fails to save

Validering av unikhet

uniqueness: true hindrer dupliserte verdier, for eksempel at to brukere har samme e-postadresse. Kombiner den med en unik databaseindeks, fordi valideringen alene har en kappløpsbetingelse ved høy samtidighet.

class User < ApplicationRecord
  validates :email, presence: true, uniqueness: true
end

Format og lengde

Andre innebygde validatorer:

  • length: { minimum: 8 } for størrelsesbegrensninger.
  • format: { with: /regex/ } for mønstre.
  • numericality: true for tall.
  • inclusion: { in: [...] } for tillatte verdier.
class User < ApplicationRecord
  validates :password, length: { minimum: 8 }
  validates :age, numericality: { greater_than: 0 }
end

valid? og errors

Kall valid? for å kjøre valideringer uten å lagre. Etter en mislykket lagring inneholder record.errors problemene, og errors.full_messages gir lesbare strenger til brukergrensesnittet.

user = User.new(name: "")
if user.valid?
  user.save
else
  puts user.errors.full_messages
end

save kontra save!

To måter å lagre på:

  • save returnerer true/false, slik at du kan velge gren basert på resultatet.
  • save! utløser RecordInvalid ved feil, noe som er nyttig når ugyldige data skal behandles som et unntak.

Det samme mønsteret gjelder for create/create! og update/update!.

user.save   # => false if invalid
user.save!  # => raises if invalid

Egendefinerte valideringer

For regler utover de innebygde skriver du en metode og registrerer den med validate. Legg til problemer med errors.add.

class User < ApplicationRecord
  validate :name_not_admin

  def name_not_admin
    if name == "admin"
      errors.add(:name, "cannot be admin")
    end
  end
end

Spørringer med where

Spørringsgrensesnittet starter med where, som filtrerer rader. Det returnerer en lat relasjon som du kan kjede videre før den treffer databasen.

User.where(active: true)
User.where("age > ?", 18)
User.where(role: ["admin", "editor"])

Sortering og begrensning

Form resultatene med metoder som kan kjedes:

  • order(created_at: :desc) sorterer.
  • limit(10) og offset(20) brukes til paginering.
  • select(:id, :name) velger kolonner.
User.where(active: true)
    .order(created_at: :desc)
    .limit(10)

Aggregeringer og lat lasting

Hjelpemetoder for aggregering kjører databasefunksjoner: count, sum(:amount), average(:age), maximum, minimum. Relasjoner er late; spørringen kjøres først når du itererer over resultatet, kaller en aggregering eller bruker to_a.

User.where(active: true).count
Order.sum(:total)
User.average(:age)

Scopes

En scope gir en gjenbrukbar spørring et navn, slik at du kan sette den sammen på en ryddig måte. Scopes returnerer relasjoner og kan kjedes med hverandre og med where.

class User < ApplicationRecord
  scope :active, -> { where(active: true) }
  scope :adults, -> { where("age >= ?", 18) }
end

User.active.adults

Kort kontroll

Test forståelsen din av valideringer og spørringer.

Oppsummering: Valideringer og spørringer

Du har lært å beskytte og hente data:

  • Valideringer som tilstedeværelse, unikhet, lengde og format beskytter lagringer.
  • valid? og errors rapporterer problemer; save! utløser et unntak.
  • Egendefinerte valideringer dekker spesielle regler.
  • where, order, limit, aggregeringer og scopes bygger late spørringer.

Det avslutter kurset om Models og Active Record.

Gratis å komme i gang

Lær deg Ruby med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
29
Leksjoner
109

Ofte stilte spørsmål

Er leksjonen «Valideringer og spørringer» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Ruby Academy, inkludert «Valideringer og spørringer», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Ruby Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Valideringer og spørringer»?

Dataintegritet og spørringer Du øver på Ruby Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Ruby Academy?

Ingen tidligere erfaring er nødvendig. Ruby Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Valideringer og spørringer»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Ruby Academy-leksjonen?

Ja. Alle Ruby Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Grunnleggende Active Record
  2. Migreringer
  3. Assosiasjoner
  4. Valideringer og spørringer
← Tilbake til Ruby Academy