2020. március 20. 542 olvasott

A Ruby on Rails-ben a Ruby on Rails a modellből, nézetekből és egy vezérlőből álló készlet automatikus generálására utal, amelyet általában egyetlen adatbázis-táblához használnak.

Egy kész kontrollert, modellt és nézeteket, valamint egy teljes CRUD (Create, Read, Update, Update, Delete) webes felületet automatikusan generálhatunk például a Story táblához a következő paranccsal:

$rails generate scaffold Story title:string content:text

Ez sokkal egyszerűbb, mint mindent magunknak kódolni, rengeteg időt takaríthatunk meg vele!

Scaffold vagy modellek?

A scaffolddal szemben, amely mindent létrehoz, amire szükséged van (és amire nincs szükséged), a modellek csak néhány kapcsolódó komponenst hoznak létre. A legjobb, és számomra legkedvesebb módja annak, hogy elmagyarázzuk az állványzat és a modellek közötti különbséget a következő példán keresztül:

Modellek generálása

Mihelyt megadod a parancsot

$rails generate model Story title:string content:text

generálod:

invoke active_record az adatbázishoz köti a modellt, míg a következő sor egy migrációs fájlt hoz létre. A migrációk az adatbázis sémájának módosítására szolgálnak. Ez a migrációs fájl létrehozza a ‘stories’ nevű adatbázis táblát, és adatbázis oszlopokat a ‘title’ és ‘content’ számára.

A harmadik sor létrehoz egy modellt – egy Ruby osztályt, amely örökli az Active Recordot. Ezzel minden olyan metódus, amely az Active Recordban meghívható, most már a modellben is meghívható. Az utolsó három sor a modelledhez kapcsolódó tesztfájlokat hoz létre.

Míg a scaffolding segítségével gyorsan működőképes leszel, az általa generált kód nem valószínű, hogy tökéletesen illeszkedik az alkalmazásodhoz. Valószínűleg a generált kódot testre akarja majd szabni. Sok tapasztalt Rails-fejlesztő teljesen elkerüli a scaffoldingot, és inkább az egész forráskódot vagy annak nagy részét a semmiből írja meg. Erről bővebben a RailsGuides oldalon olvashat.

Amint láthatja, a generate models nem hoz létre semmiféle nézetet az információ megjelenítéséhez az oldalon. Ahhoz, hogy egy teljes, használatra kész alkalmazásod legyen, szükséged lenne:

  • vezérlők generálására (ami viszont nézeteket is generál) vagy
  • generate scaffold (ami generálja a modellt, nézeteket, vezérlőt és ír a routes.rb fájlodba).

Ha meggondolod magad, és a scaffold használata mellett döntesz, miután már generáltad a modellt, bármikor futtathatod a

$rails generate scaffold <name>

Ez létrehozza az összes hiányzó fájlt.

Generate scaffold

Ha megadja a

$rails generate scaffold Story title:string content:text

parancsot, akkor a következő fájlokat generálja:

Mihelyt a modellhez kapcsolódó tesztek elkészültek, a következő sorban a történetekhez tartozó erőforrás útvonalakat generálja. Az erőforrás útvonalak generálása után következik a kontroller és annak akciói (index, show, new, edit, create, update és destroy), valamint az egyes akciókhoz tartozó nézetek és kontroller tesztek.

A Rails router felismeri az URL-eket és összekapcsolja őket egy kontroller akciójával. Alapértelmezés szerint egy vezérlő akciója egy azonos nevű nézetet fog megjeleníteni.

Migráció

Minden alkalommal, amikor szkriptek segítségével létrehoz egy migrációt (generate model/generate scaffold), egy új migráció kerül a megfelelő könyvtárba. A

$rake db:migrate

segítségével ellenőrizheti, hogy mely migrációkat nem adta hozzá az adatbázishoz.

Destroy

Mindenki szabadon szerkesztheti és elvégezheti a szükséges módosításokat az alkalmazásán, hogy az rendeltetésszerűen működjön, még akkor is, ha ez a scaffold teljes eltávolítását jelenti. A scaffoldot a következő módon lehet eltávolítani:

  1. Generate scaffold:
    $rails generate scaffold Story
  2. Ha áttelepítette a fájljait, végezzen visszaállítást:
    $rake db:rollback
  3. Törölje vagy vonja vissza az állványzatot:
    $rails destroy scaffold Story

Ezzel az összes, a scaffold által létrehozott fájlt törli, de az esetlegesen kézzel elvégzett további módosítások nem kerülnek eltávolításra.

Következtetés

A scaffold kiválóan használható, ha egyszerű példákról, gyors mockupokról vagy tesztelésről van szó. Azonban mindenképpen generáljon saját modelleket, ha úgy dönt, hogy új alkalmazást fejleszt. Ne felejtsd el mindig tesztelni az alkalmazásodat, tudd meg, hogyan teheted ezt meg a Capybara segítségével!

Reméljük, ma felfedeztél valami újat!

Előzőleg megjelent a https://kolosek.com/rails-scaffold/

alatt.

Tags

Join Hacker Noon

Létrehozza ingyenes fiókját, hogy feloldja egyéni olvasási élményét.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.