Rails Skele

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:

  1. Generiši skelu: $rails generate scaffold Story
  2. Ako ste migrirali datoteke, izvršite vraćanje: $rake db:rollback
  3. 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!