Valideringer og spørringer
Dataintegritet og spørringer
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 saveValidering 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
endFormat og lengde
Andre innebygde validatorer:
length: { minimum: 8 }for størrelsesbegrensninger.format: { with: /regex/ }for mønstre.numericality: truefor tall.inclusion: { in: [...] }for tillatte verdier.
class User < ApplicationRecord
validates :password, length: { minimum: 8 }
validates :age, numericality: { greater_than: 0 }
endvalid? 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
endsave kontra save!
To måter å lagre på:
savereturnerertrue/false, slik at du kan velge gren basert på resultatet.save!utløserRecordInvalidved 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 invalidEgendefinerte 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
endSpø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)ogoffset(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.adultsKort 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?ogerrorsrapporterer 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.
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
- Grunnleggende Active Record
- Migreringer
- Assosiasjoner
- Valideringer og spørringer