Rails Skele
Skele u Rubi on Rails se odnose na automatsko generisanje skupa modela, pogleda i kontrolera koji se obično koriste za jednu tabelu baze podataka.
Na primer, možete automatski generisati spreman za upotrebu kontroler, model i poglede sa punim CRUD (Create, Read, Update, Delete) veb interfejsom za tabelu Story pomoću sledeće naredbe:
$rails generate scaffold Story title:string content:text
To je mnogo lakše uraditi, umesto da sve sami kodirate, to vam štedi puno vremena!
Skela ili modeli?
U poređenju sa skelom koja generiše sve što vam treba (a i ne treba), modeli kreiraju samo neke srodne komponente. Najbolji i najdraži način da objasnim razliku između skele i modela je sledeći primer:
Generiši modele
Jednom kada unesete naredbu $rails generate model Story title:string content:text
generisaćete:
invoke active_record
create db/migrate/20180205103025_create_stories.rb
create app/models/story.rb
invoke test_unit
create test/models/story_test.rb
create test/fixtures/stories.yml
invoke active_record povezaće vaš model sa bazom podataka, dok sledeći red kreira datoteku za migraciju . Migracije se koriste za izmenu šeme baze podataka. Ova datoteka za migraciju kreira tabelu baze podataka koja se naziva „priče“ i kolone baze podataka za „naslov“ i „sadržaj“.
Treći red će stvoriti model - Rubi klasu koja nasleđuje Active Record. Ovim se svaka metoda koja se može pozvati u aktivnom zapisu sada može pozvati u vašem modelu. Poslednja tri reda kreiraju povezane test datoteke za vaš model.
Iako će vas skele brzo pokrenuti, malo je verovatno da kod koji generiše savršeno odgovara vašoj aplikaciji. Najverovatnije ćete želeti da prilagodite generisani kod. Mnogi iskusni programeri Rails-a u potpunosti izbegavaju skele, više vole da čitav ili veći deo svog izvornog koda napišu ispočetka. Više o ovome možete pročitati na RailsGuides .
Kao što vidite, generiranje modela ne stvara bilo kakav prikaz za prikaz informacija na stranici. Da biste imali kompletnu, spremnu za upotrebu aplikaciju, potrebno je da:
- generisati kontrolere (koji zauzvrat takođe generišu poglede) ili
- generišite skelu (koja generiše vaš model, poglede, kontroler i upisuje u vašu route.rb datoteku).
Ako se predomislite i odlučite da koristite skelu nakon što ste već generisali model, uvek možete da trčite $rails generate scaffold <name>
. Stvoriće sve datoteke koje nedostaju.
Generiši skelu
Ako unesete naredbu $rails generate scaffold Story title:string content:text
, generisaćete sledeće datoteke:
invoke active_record
create db/migrate/20180205103508_create_stories.rb
create app/models/story.rb
invoke test_unit
create test/models/story_test.rb
create test/fixtures/stories.yml
invoke resource_route
route resources :stories
invoke scaffold_controller
create app/controllers/stories_controller.rb
invoke erb
create app/views/stories
create app/views/stories/index.html.erb
create app/views/stories/edit.html.erb
create app/views/stories/show.html.erb
create app/views/stories/new.html.erb
create app/views/stories/_form.html.erb
invoke test_unit
create test/controllers/stories_controller_test.rb
invoke helper
create app/helpers/stories_helper.rb
invoke test_unit
invoke jbuilder
create app/views/stories/index.json.jbuilder
create app/views/stories/show.json.jbuilder
create app/views/stories/_story.json.jbuilder
invoke assets
invoke coffee
create app/assets/javascripts/stories.coffee
invoke scss
create app/assets/stylesheets/stories.scss
invoke scss
create app/assets/stylesheets/scaffolds.scss
Jednom kada se kreiraju testovi u vezi sa modelom, sledeći red će generisati putanje resursa do vaših priča. Nakon generisanja ruta resursa dolazi kontroler i njegove radnje (indeksiranje, prikazivanje, novo, uređivanje, kreiranje, ažuriranje i uništavanje), zajedno sa prikazima i testovima kontrolera za svaku od ovih radnji.
Ruter Rails prepoznaje URL adrese i povezuje ih sa akcijom kontrolera. Podrazumevano, radnja kontrolera će prikazati istoimeni prikaz.
Migracija
Svaki put kada kreirate migraciju pomoću skripti (generišite model / generišite skelu) nova migracija se dodaje u ispravan direktorijum. Koristite $rake db:migrate
za proveru migracija koje nisu dodate u bazu podataka.
== 20180205103508 CreateStories: migrating ====================================
-- create_table(:stories)
-> 0.0007s
== 20180205103508 CreateStories: migrated (0.0008s) ===========================
Uništiti
Svako može slobodno da uređuje i unosi potrebne promene u svoju aplikaciju kako bi funkcionisao onako kako je predviđeno, čak i ako to znači potpuno uklanjanje skele . Skelu možete ukloniti na sledeći način:
- Generiši skelu:
$rails generate scaffold Story
- Ako ste migrirali datoteke, izvršite vraćanje:
$rake db:rollback
- Uništi ili poništi skelu:
$rails destroy scaffold Story
Na taj način ćete izbrisati sve datoteke stvorene na skeli, ali dodatne promene koje ste možda ručno uradili neće biti uklonjene.
Zaključak
Skela je odlična za upotrebu kada su u pitanju jednostavni primeri, brze makete ili testiranja . Međutim, budite sigurni da generišete sopstvene modele kada odlučite da razvijete novu aplikaciju. Ne zaboravite da uvek testirate svoju aplikaciju, saznajte kako se to radi pomoću Capybare !
Nadamo se da ste danas otkrili nešto novo!
Ako želite dublje da kopate i tražite još Rubi misterija, pretplatite se na naš bilten!