Rails’ gebruik van strikte naamgevingsconventies betekent dat veel kerncode in hetzelfde formaat zou MOETEN zijn, wie het ook schrijft? Het kan geschreven zijn door een vriend, collega of een computer… het zou niet uit moeten maken want dezelfde Rails regels gelden voor iedereen.
Dit betekent dat Rails eigenlijk sommige taken voor je kan doen! Het kan eigenlijk dingen bouwen en code schrijven in jouw naam…
Vanuit een andere taal als PHP, kan dit op magie lijken.
Snelle referentie:
rails g scaffold Post name:string title:string content:textrails g controller Commentsrails g model Comment commenter:string body:text article:references
##Rails generatorHet commando rails generate gebruikt sjablonen die door conventies zijn ontworpen om een heleboel nuttige dingen te maken. Het uitvoeren van rails generate op zichzelf geeft een lijst van beschikbare generators:
rails generate
of voor super-hackers:
rails g
Er zijn een heleboel generators:
Rails:
- assets
- controller
- generator
- helper
- integration_test
- mailer
- migration
- model
- observer
- performance_test
- resource
- scaffold
- scaffold_controller
- session_migration
- task
Coffee:
- coffee:assets
Jquery:
- jquery:install
Js:
- js:assets
##Scaffolding in Rails
De scaffolding tool van Rails is een snelle manier om enkele van de belangrijkste stukken code in een applicatie te genereren. Dit bespaart een hoop tijd als je snel aan de slag wilt! (Het is super cool!)
Afhankelijk van wat je wilt maken, kan scaffolding alles automatisch genereren of een combinatie van:
migrationsmodelsviewscontrollersunit_tests helpersstylesheetsjavascript
Er zijn misschien nog een paar bestanden die het maakt… Ik weet niet zeker of dat een complete lijst is!
##Scaffolding a whole resource
Je bent dingen aan het scaffolden die bij een object horen (enkelvoud)
Als je een applicatie wilt scaffolden, moet je elke resource binnen die applicatie scaffolden. Als je bijvoorbeeld een blogtoepassing zou willen maken, zou je de hele Post-bron kunnen scaffolden:
rails g scaffold Post
De naam van de bron Post
moet zijn:
- UpperCamelCase
- SINGULAR
Deze naam wordt de naam van het model, bijv. Post. Het is ook de naam van de controller klasse (maar meervoudig), bijv. PostsController EN de naam van de tabel (maar meervoudig), bijv. posts
Na de klasse naam, kunt u tabel kolommen en hun datatypen toe te voegen.
rails g scaffold Post name:string title:string content:text
De namen van deze tabel kolommen moeten zijn:
- lower_snake_case
- SINGULAR
Dit is omdat het de bedoeling is dat elk Post item één waarde opgeslagen heeft in elke kolom.
Als u deze scaffold uitvoert, worden de volgende bestanden aangemaakt:
In de PostController worden alle RESTful-methodes aangemaakt en ze hebben allemaal hun eigen view-bestanden.
Na het maken van de migratie bestand, om de wijziging in de database niet vergeten uit te voeren:
rake db:migrate
##Genereren gewoon een controller
Het bestuurt veel objecten (dus het is meervoud)
Soms, wil je alleen een controller te genereren.
rails g controller Comments
De naam van de controller moet zijn:
- UpperCamelCase
- PLURALIZED
Dit komt omdat een controller veel voorbeelden van een object bestuurt, dus moet het meervoud zijn.
Dit zal deze bestanden maken:
Dit zal GEEN migratie bestand of een model bestand maken.
##Genereer alleen een model
U genereert de omtrek van een object (enkelvoud)
Als u alleen een model wilt maken, kunt u doen:
rails g model Comment
- UpperCamelCase
- SINGULAR
U kunt hier ook de kolomnamen aan toevoegen als u dat wilt:
rails g model Comment commenter:string body:text article:references
De kolomnamen van deze tabellen moeten zijn:
- lower_snake_case
- SINGULAR
Het genereren van een model zal deze bestanden creëren: