Ruby Academy · Oppitunti

Active Recordin perusteet

ORM:n perusteet.

Oppitunti 1/413 vaihetta

Active Recordin perusteet on ilmainen Ruby Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Ruby Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Ruby Academy-kurssilla on yhteensä 4 oppituntia.

Mikä Active Record on?

Active Record on Railsin ORM- eli oliorelaatiokartoituskerros. Se yhdistää Ruby-oliot tietokantataulujen riveihin, joten voit käsitellä olioita suoran SQL:n sijaan.

  • Luokka vastaa taulua.
  • Ilmentymä vastaa riviä.
  • Attribuutti vastaa saraketta.

Mallin määrittäminen

Malli on luokka, joka perii luokan ApplicationRecord (joka puolestaan perii luokan ActiveRecord::Base). Käytännön mukaan User-malli yhdistetään automaattisesti users-tauluun.

class User < ApplicationRecord
end

# Maps to the 'users' table
# Columns become attributes automatically

Käytännöt määritysten sijaan

Active Record käyttää nimeämiskäytäntöjä, joten määrityksiä tarvitaan vähemmän:

  • Luokkien nimet ovat yksikössä ja CamelCase-muodossa: User.
  • Taulujen nimet ovat monikossa ja snake_case-muodossa: users.
  • Ensisijainen avain on oletusarvoisesti id.

Kun käytäntöjä noudatetaan, useimmat kytkennät toimivat automaattisesti.

Tietueiden luominen

Rivejä voi luoda komennolla create tai rakentaa ensin ja tallentaa sitten komennolla save. create luo olion ja tallentaa sen yhdellä kutsulla.

user = User.create(name: "Ada", email: "ada@example.com")

# Or in two steps:
other = User.new(name: "Linus")
other.email = "linus@example.com"
other.save

Tietueiden lukeminen

Hae tietueita hakumenetelmillä:

  • User.find(1) ensisijaisen avaimen perusteella (antaa virheen, jos tietuetta ei löydy).
  • User.find_by(email: 'a@b.com') minkä tahansa sarakkeen perusteella (palauttaa arvon nil, jos tietuetta ei löydy).
  • User.all kaikkia rivejä varten.
  • User.first ja User.last.
user = User.find(1)
admin = User.find_by(role: "admin")
everyone = User.all

Tietueiden päivittäminen

Muuta attribuutteja ja kutsu sitten save-metodia tai käytä update-metodia arvojen määrittämiseen ja tallentamiseen samalla kertaa. update palauttaa arvon true tai false validoinnin perusteella.

user = User.find(1)
user.update(name: "Ada Lovelace")

# Equivalent two-step form:
user.name = "Ada Lovelace"
user.save

Tietueiden poistaminen

Poista rivejä komennolla destroy (suorittaa callbackit ja assosiaatiot) tai komennolla delete (suora SQL, ohittaa callbackit). Käytä ensisijaisesti komentoa destroy, ellei callbackien ohittamiseen ole erityistä syytä.

user = User.find(1)
user.destroy

# Bulk destroy:
User.where(active: false).destroy_all

Attribuutit ja muutosseuranta

Active Record seuraa tallentamattomia muutoksia. Metodit kuten changed?, changes ja name_was kertovat, mitkä tiedot ovat muuttuneet ennen tallennusta. Tämä on hyödyllistä callbackeissa ja lokituksessa.

user = User.find(1)
user.name = "New Name"
puts user.changed?      # true
puts user.name_was      # old value
puts user.changes.inspect

schema.rb-tiedosto

Active Record lukee taulujen rakenteen tietokannasta, ei mallista. Nykyinen rakenne on tallennettu tiedostoon db/schema.rb, joka luodaan migraatioista. Sitä muokataan käsin vain harvoin.

Mihin SQL päätyy?

Active Record muuntaa metodikutsusi SQL:ksi taustalla. User.find(1) muuttuu muotoon SELECT * FROM users WHERE id = 1 LIMIT 1. Luodun SQL:n voi nähdä komennolla User.where(active: true).to_sql.

sql = User.where(active: true).to_sql
# => SELECT "users".* FROM "users" WHERE "users"."active" = TRUE

Miksi ORM auttaa

Active Record tarjoaa:

  • Tietokannasta riippumatonta koodia (PostgreSQL, MySQL, SQLite).
  • Suojan SQL-injektioita vastaan parametrisoitujen kyselyjen avulla.
  • Selkeän, oliopohjaisen tavan käsitellä tietoja.

Suoraa SQL:ää tarvitaan vain erityistapauksissa.

Pikatarkistus

Testaa, ymmärrätkö Active Recordin perusteet.

Kertaus: Active Recordin perusteet

Opit ORM:n perusteet:

  • Luokka vastaa taulua ja ilmentymä riviä.
  • Nimeämiskäytännöt hoitavat määritykset.
  • CRUD: create, find/find_by, update, destroy.
  • Muutosseuranta näyttää tallentamattomat muutokset.
  • Active Record luo turvallisen SQL:n puolestasi.

Seuraavaksi tietokantakaaviota hallitaan migraatioilla.

Aloita maksutta

Opi Ruby tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
29
Oppitunnit
109

Usein kysytyt kysymykset

Onko oppitunti ”Active Recordin perusteet” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Ruby Academy-oppimispolun 3 oppituntia, myös oppitunnin “Active Recordin perusteet”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Ruby Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Active Recordin perusteet”?

ORM:n perusteet. Harjoittelet Ruby Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Ruby Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Ruby Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Active Recordin perusteet”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Ruby Academy-oppitunnilla?

Kyllä. Jokainen Ruby Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Active Recordin perusteet
  2. Migraatiot
  3. Assosiaatiot
  4. Validoinnit ja kyselyt
← Takaisin: Ruby Academy