keskiviikko 15. lokakuuta 2014

Puuhastelua mallien kanssa

Loin myös vastaavat modelit. Halusin niiden riippuvan toisistaan, joten tein taskiin goal_id-kentän ja goaliin project_id-kentän. Niin voisin löytää kuhunkin tavoitteeseen liittyvät tehtävät ja kuhunkin projektiin liittyvät tavoitteet. Loin mallit komentoriviltä, ja minun piti tehdä se muutamaan kertaan.

Lisäsin myös app/model-hakemistossa oleviin tiedostoihin tiedon siitä, millaisissa suhteissa ne ovat toisiinsa. Esim. app\models\task.rb tiedostoni näytti tältä:

class Task < ActiveRecord::Base
    belongs_to :goal
end


ja app\models\project.rb

class Project < ActiveRecord::Base
    has_many :goals
end


Näillä saa ohjeiden mukaan helpotettua esimerkiksi poistoa, kun ohjelma tietää mikä liittyy mihinkin. Onhan se itsellekin selkeyttävää, kun nämä laittaa paikoilleen.

Tietokantataulujen muoto generoituu tiedostoon db\schema.rb. Sieltä näkee minkä nimisiä sarakkeita sitä onkaan tullut luotua.

Taulujen luonnit ja muutokset tehdään migraatioilla. Antaisin ennemminkin nimeksi migreeni. Tämä osa-alue on jäänyt vielä melko hämäräksi. Idea on käsittääkseni se, että kukin muodon muutos tehdään ajamalla migraatiotiedosto, jonka voi myös perua. Menin itse niin solmuun noiden tiedostojen kanssa varsinkin kun menin käpälöimään käsin jotain mitä ilmeisesti ei olisi saanut muuttaa. Tiedostojen nimessä on aikaleima, jonka perusteella migraatiot ajetaan järjestyksessä.

Joka tapauksessa tietokannan hakiessa muotoaan minulle tuli tutuksi komentosarja

rake db:drop db:create db:migrate

joka tyhjentää tietokannat, luo ne uudelleen ja ajaa migraatiot. Joskus vielä ymmärrän tämänkin paremmin ja voin kirjoittaa siitä enemmän.

Ei kommentteja:

Lähetä kommentti