După aflând despre Ruby, primul pas pe care l-am făcut a fost să înțelegem cum web și ciclul de solicitare-răspuns Ruby on Rails muncă.

Acum este timpul să aflăm despre bazele de date și despre cum se conectează cu Ruby on Rails. Practic, răspunsul este Modelul: M din MVC , după cum am învățat Aici.

Înainte de a învăța dezvoltarea web cu Rails, îți recomand cu adevărat să afli despre Ruby mai întâi.

Sa incepem!

Ce este o bază de date?

Hmmm … Primul gând care îmi vine în minte este ceva care stochează date.

Dar această definiție este destul de imprecisă! O matrice, un hash, o listă legată sau orice structură de date poate fi ceva care poate stoca date.

Când opriți computerul, pierdeți toate valorile de date stocate în acea matrice (la fel ca toate structurile de date). Așadar, nu este o idee bună să-mi stochezi toate precious data.

Intelegerea elementelor de baza ale Ruby on Rails baze de
DATELE MELE PRECIOASE

Aici trebuie să rezolvăm două probleme:

  1. Stocați date și obțineți-le oricând dorim.
  2. Stocați datele într-un mod organizat și structurat, astfel încât să le putem obține cu ușurință.

Ar trebui să stochez toate datele într-un blocnotes? Doar puneți toate informațiile din interior separate prin virgule, salvați txt file, și gata. Acum îl pot deschide și obține toate datele dorite. Putem stoca date și le putem obține oricând … rezolvată problema!

Am rezolvat această problemă, dar ne-a fost dor de cealaltă. Acum toate datele sunt stocate și nu le vom pierde. Dar nu este bine structurat în fișier. Avem nevoie de regulă pentru a stoca și a obține date într-o formă bine organizată și bine structurată.

Să ne gândim cum putem organiza datele într-un mod bine structurat.

Dar organizarea tuturor datelor în tabele?

Intelegerea elementelor de baza ale Ruby on Rails baze de

Deci, iată că avem: antetul tabelului (numele coloanelor: prenume, prenume, adresă etc) conținând valori pe care le vom stoca. De exemplu, dacă vrem să stocăm fișierul șir „Mickey” (valoarea), va fi stocat în “Nume” coloană.

  • Masa: sa spunem oameni
  • Coloane: Nume, Numele de familie, Abordare, etc.
  • Rânduri: în acest caz, putem spune că un rând poate fi un persoană cu, de exemplu, prenumele „Mickey”Și prenumele„Șoarece,”Adresa” 123 Fantasy Way,”Etc.
  • Câmpuri: toate datele stocate în baza de date.

Și acum avem un mod bine structurat de stocare a datelor: într-o masă!

Ce zici de obținerea, ștergerea, inserarea și actualizarea datelor?

Vom folosi limbajul SQL (Nu voi menționa lumea NoSQL!) pentru a manipula datele. Să luăm elementele de bază.

  1. OBȚINE: dacă vrem să obținem toate datele (persoană) din oameni tabel, trebuie să îl selectăm din tabelul respectiv.

(*) simbol înseamnă că va selecta toate coloanele din oameni masa. Dacă putem obține toate coloanele, putem specifica ce coloane avem nevoie pentru această selecție.

2. ȘTERGE: vrem să ștergem toate datele din oameni masa.

Dar nu este obișnuit să ștergeți toate datele dintr-un tabel. De obicei, folosim o condiție pentru ștergere, cum ar fi „Vreau să șterg toate persoanele sub 21 de ani”. Vom afla cum mai târziu în această postare!

3. INTRODUCE: vom introduce / stoca date în tabel.

sau putem specifica în ce coloane dorim să inserăm date.

4. ACTUALIZAȚI: am stocat datele, dar vrem să le actualizăm.

Folosind condiții în interogările noastre

Acum putem folosi limbajul SQL pentru a interoga (selecta, șterge, insera, actualiza) date.

  • Dar dacă vrem să ștergem doar înregistrările cu numele de familie Kinoshita?
  • Sau dacă dorim să actualizăm o anumită persoană cu prenume Leandro și numele de familie Kinoshita?
  • Sau pur și simplu selectați toate datele din tabelul de persoane și sortați-le în funcție de vârstă de la mai mic la mai mare?

Da, folosim condiții de genul Unde și comandă după, și operatorilor le place sau și și. Să vedem câteva exemple:

  • Ștergerea tuturor înregistrărilor din tabelul de persoane cu numele de familie Kinoshita.
  • Actualizarea tuturor înregistrărilor din tabelul de persoane cu prenume Leandro și numele de familie Kinoshita.
  • Selectarea tuturor înregistrărilor din tabelul de persoane, dar ordonarea acestora în funcție de vârstă (în ordine crescătoare → ASC).

Relația dintre tabele

Știm cum să executăm interogări (cu sau fără condiții). Să înțelegem cum funcționează relațiile tabelelor.

  • One to One (1-1): este vorba despre o relație între două tabele în care una poate aparține doar celeilalte. de exemplu O persoană are un pașaport și acel pașaport aparține acelei persoane. Deci, în acest exemplu, avem tabela Oameni, pașapoarte de masă și o relație 1-1.
  • One to Many (1-n): este vorba despre o relație între două tabele în care o înregistrare dintr-un tabel poate face referință la multe înregistrări din altul. de exemplu Imaginați-vă o platformă de comerț electronic: utilizatori, comenzi, produse, plăți etc. Un utilizator poate avea multe comenzi și fiecare comandă aparține acelui utilizator specific. Deci, în acest exemplu, avem Utilizatori de tabel, Comenzi de tabel și o relație 1-n.
  • Mulți la mulți (nn): este vorba despre o relație între două tabele în care o înregistrare dintr-un tabel poate face referință la multe înregistrări din altul. Și o înregistrare din alta poate face referință și la multe înregistrări din acea. de exemplu Avem din nou platforma de comerț electronic: împărțim produsele în categorii. O categorie are multe produse (categoria Tehnologie are multe produse precum telefoane mobile, notebook-uri etc.) și un produs poate aparține multor categorii (produsul Telefon mobil aparține categoriilor de tehnologie și electronică). Deci, în acest exemplu, avem Produse de tabel, Categorii de tabele și o relație nn.

Modul Rails ON

Acum înțelegem semnificația bazelor de date, am încercat câteva interogări de bază și am vorbit despre relația dintre tabele. Dar cum putem folosi aceste cunoștințe în Ruby on Rails și dezvoltarea lumii web?

În primul rând: Șine este Șine. Bază de date este Bază de date. Este evident? Dar oamenii se confundă de obicei cu privire la asta.

A Utilizator model poate sa reprezinta a Utilizatori masa. Dar modelul nu este masa.

  • În Bază de date, noi avem Mese și rânduri.
  • Pe șine, noi avem modele (clase) și obiecte.

Imaginați-vă un site de blog. Blogul are nevoie de un autor pentru fiecare postare. Deci creăm un Autori tabel cu câteva coloane (prenume, prenume, etc):

În migrare, adăugăm coloane first_name, last_name, email, birthday, created_at, și updated_at. (created_at și updated_at sunt create de t.timestamps cod).

Deci creăm o migrare (cod Ruby), executăm rake db:migrate comandă în terminal și generează o tabelă Authors cu first_name, last_name, email, birthday, created_at, și updated_at coloane.

Înapoi la Rails – putem crea un Author model:

Deci, acum avem un Authors tabel cu câteva coloane și un Author model.

Utilizarea consolei Rails

Deschideți terminalul și tastați bundle exec rails c. Amintiți-vă, suntem în ȘINE consolă, deci avem clase, obiecte, atribute etc.

Relații pe șine

Am creat un Authors masă / model. Ceea ce avem nevoie acum este un Posts masă / model. Un autor are multe postări, iar o postare aparține unui anumit autor. Relația de aici este unul la mulți (1-n). Tine minte?

Deci, atunci când creăm un Posts tabel, trebuie să stocăm o referință la autorul postării (coloana autor_id în Postări masa). Este cunoscut sub numele de Foreign Key.

Și cum relaționăm modelele?

autor has_many postări

postarea aparține_ unui autor

Utilizarea consolei Rails

* Explicație rapidă despre has_many și belongs_to. Ambii codes sunt metode definite pe ActiveRecord clasă. Puteți vedea că ne creăm modelele moștenind de la ActiveRecord::Base.

Amintiți-vă în Fundația Ruby articol pe care l-am aflat despre programarea orientată pe obiecte, partea Moștenire? Acesta este motivul pentru care putem folosi has_many și belongs_to fără a o defini nicăieri pe aplicația noastră. Rails o manipulează pentru noi.

Dacă doriți să înțelegeți profund acest concept, clonați Repararea șinelor sau verificați În spatele scenei asociației de înregistrări active „Are mulți”.

Interogări pe șine

Putem interoga folosind metode ActiveRecord:

  • toate: Obțineți toate obiectele dintr-un model specific.

În culise, execută SELECT * FROM posts interogare.

  • găsi: Folosind find putem obține obiectul prin id (cheia principala).

În culise, se execută SELECT * FROM posts WHERE id = 1 interogare.

  • Unde: Obțineți obiectele care trec condițiile.

În culise, se execută SELECT * FROM posts WHERE title="Database & Rails"interogare.

  • Ordin: Sortează toate obiectele pe baza unei coloane.

În culise, se execută SELECT * FROM posts ORDER BY created_at DESC interogare.

Asta e tot!

Am învățat multe aici. Sper că voi apreciați conținutul și să aflați mai multe despre modul în care funcționează modelele de baze de date și Rails.

Acesta este încă un pas înainte în călătoria mea către învățare și stăpânire Rails și dezvoltare web. Puteți vedea documentația călătoriei mele complete aici pe pagina mea Publicația Renaissance Developer.

Dacă doriți un complet Rubin și Șine desigur, învățați abilități de codificare din lumea reală și construiți proiecte, încercați O lună Ruby Bootcamp și Rails Bootcamp. Ne vedem acolo ☺

Distrează-te și continuă să înveți și să codezi.

Ale mele Stare de nervozitate & Github. ☺