Ruby Academy · Oppitunti

Migraatiot

Kehitä skeemaa.

Oppitunti 2/413 vaihetta

Migraatiot on ilmainen Ruby Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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ä migraatio on?

Migraatio on versioitu Ruby-tiedosto, joka kuvaa tietokantakaavion muutoksen, kuten taulun luomisen tai sarakkeen lisäämisen.

  • Migraatiot ovat koodia, joten ne tallennetaan versionhallintaan.
  • Kaikki tiimin jäsenet ottavat samat muutokset käyttöön samassa järjestyksessä.
  • Tietokantaa ei koskaan muokata käsin.

Migraation luominen

Rails luo migraatiotiedostot puolestasi. Esimerkiksi rails generate migration CreateUsers luo aikaleimalla varustetun tiedoston hakemistoon db/migrate/. Aikaleima määrittää migraatioiden suoritusjärjestyksen.

Taulun luominen

Migraatio määrittää change-metodin. create_table rakentaa taulun, ja t.timestamps lisää automaattisesti sarakkeet created_at ja updated_at.

class CreateUsers < ActiveRecord::Migration[7.1]
  def change
    create_table :users do |t|
      t.string :name
      t.string :email
      t.timestamps
    end
  end
end

Saraketyypit

Yleiset saraketyypit vastaavat tietokantatyyppejä:

  • string lyhyelle tekstille.
  • text pitkälle tekstille.
  • integer, float, decimal numeroille.
  • boolean totuusarvoille true ja false.
  • datetime, date aika-arvoille.
create_table :products do |t|
  t.string :title
  t.text :description
  t.decimal :price
  t.boolean :active
  t.timestamps
end

Migraatioiden suorittaminen

rails db:migrate ottaa kaikki odottavat migraatiot käyttöön ja päivittää tiedoston schema.rb. Rails tallentaa suoritetut migraatiot schema_migrations-tauluun, joten kukin migraatio suoritetaan vain kerran.

Sarakkeen lisääminen

Laajenna olemassa olevaa taulua luomalla migraatio ja käyttämällä komentoa add_column. Määritä taulu, sarakkeen nimi, tyyppi ja asetukset.

class AddAgeToUsers < ActiveRecord::Migration[7.1]
  def change
    add_column :users, :age, :integer, default: 0
  end
end

Palauttaminen

rails db:rollback peruu viimeisimmän migraation. Rails peruu change-metodin muutokset automaattisesti, kun toimenpiteet ovat peruttavissa, kuten add_column tai create_table.

Peruuttamattomat muutokset

Joitakin toimenpiteitä ei voi perua automaattisesti, kuten suoran SQL:n suorittamista tai tietoja sisältävän sarakkeen poistamista. Määritä tällöin erilliset up- ja down-metodit, jotta Rails tietää, miten muutos perutaan.

class ChangeData < ActiveRecord::Migration[7.1]
  def up
    execute "UPDATE users SET active = TRUE"
  end

  def down
    execute "UPDATE users SET active = FALSE"
  end
end

Indeksit

Lisää indeksi nopeuttamaan usein kyselyissä käytetyn sarakkeen, kuten vierasavaimen tai kirjautumiseen käytettävän sähköpostiosoitteen, hakuja. Käytä asetusta unique: true, jos haluat valvoa yksikäsitteisyyttä myös tietokannan tasolla.

class AddIndexToUsersEmail < ActiveRecord::Migration[7.1]
  def change
    add_index :users, :email, unique: true
  end
end

Migraatiot ja schema.rb

Migraatiot ovat muutosten historia, kun taas schema.rb on nykyinen tilannekuva. Uudet kehittäjät voivat suorittaa komennon rails db:schema:load ja rakentaa tietokannan heti tilannekuvan perusteella sen sijaan, että kaikki migraatiot suoritettaisiin uudelleen.

Parhaat käytännöt

Pidä migraatiot turvallisina:

  • Älä koskaan muokkaa jaetuissa ympäristöissä suoritettua migraatiota, vaan kirjoita uusi migraatio.
  • Pidä kukin migraatio keskittyneenä yhteen muutokseen.
  • Lisää tietokannan tasolle eheyden varmistavat rajoitteet (null: false, indeksit).

Pikatarkistus

Testaa, ymmärrätkö migraatiot.

Kertaus: migraatiot

Opit muuttamaan tietokantakaaviota turvallisesti:

  • Migraatiot ovat versioituja ja versionhallintaan tallennettuja kaavion muutoksia.
  • create_table, add_column ja add_index määrittävät taulujen rakenteen.
  • db:migrate ottaa muutokset käyttöön ja db:rollback peruu ne.
  • Käytä komentoja up/down peruuttamattomiin muutoksiin.
  • schema.rb on nykyinen tilannekuva.

Seuraavaksi mallit yhdistetään assosiaatioilla.

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 ”Migraatiot” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Ruby Academy-oppimispolun 3 oppituntia, myös oppitunnin “Migraatiot”. 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 ”Migraatiot”?

Kehitä skeemaa. 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 2/4.

Kuinka kauan ”Migraatiot”-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