Rails användning av strikta namnkonventioner innebär att mycket av kärnkoden borde vara i samma format oavsett vem som skriver den? Den kan vara skriven av en vän, en kollega eller en dator… det borde inte spela någon roll eftersom samma Rails-regler gäller för alla.
Detta innebär att Rails faktiskt kan göra vissa uppgifter åt dig!Det kan faktiskt bygga saker och skriva kod åt dig…
När du kommer från ett annat språk som PHP kan detta verka magiskt.
Snabbreferens:
rails g scaffold Post name:string title:string content:textrails g controller Commentsrails g model Comment commenter:string body:text article:references
##Rails generatorKommandot Rails generate använder mallar som är utformade efter konvention för att skapa en hel del användbara saker. Om du kör rails generate i sig själv får du en lista över tillgängliga generatorer:
rails generate
eller för superhackare:
rails g
Det finns många generatorer:
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 i Rails
Rails verktyg för scaffolding är ett snabbt sätt att generera några av de viktigaste kodbitarna i en applikation. Detta sparar mycket tid när du vill komma igång snabbt! (Det är superhäftigt!)
Beroende på vad du vill skapa kan scaffolding automatiskt generera alla eller en kombination av:
migrationsmodelsviewscontrollersunit_tests helpersstylesheetsjavascript
Det kan finnas ytterligare några filer som det gör… Jag är inte säker på att det är en fullständig lista!
##Scaffolding a whole resource
Du scaffoldar saker som är associerade med ett objekt (singular)
Om du vill scaffolda ett program måste du scaffolda varje resurs i det programmet. Om du vill göra ett bloggprogram till exempel – så kan du ställa in hela Post-resursen:
rails g scaffold Post
Resursnamnet Post
måste vara:
- UpperCamelCase
- SINGULAR
Det här namnet kommer att vara namnet på modellen, t.ex. Post. Det kommer också att vara namnet på kontrollantklassen (men i plural), t.ex. PostsController OCH namnet på tabellen (men i plural), t.ex. posts
Efter klassnamnet kan du lägga till tabellkolumner och deras datatyper.
rails g scaffold Post name:string title:string content:text
Dessa tabellkolonnnamn bör vara:
- lower_snake_case
- SINGULAR
Detta beror på att varje Post-objekt är tänkt att ha ett värde lagrat i varje kolumn.
Om du körde den här ställningen skulle den skapa dessa alla filer:
Inom PostController kommer alla RESTful-metoder att skapas och de kommer alla att ha sina motsvarande visningsfiler.
Efter att ha skapat migrationsfilen, för att göra ändringen i databasen, kom ihåg att köra:
rake db:migrate
##Generera bara en controller
Den kontrollerar många objekt (så det är plural)
Ibland vill du generera bara en controller.
rails g controller Comments
Controllernamnet måste vara:
- UpperCamelCase
- PLURALIZED
Detta beror på att en controller hanterar många exempel på ett objekt, så det bör vara i plural.
Det här kommer att skapa de här filerna:
Det här kommer INTE att skapa en migrationsfil eller en modellfil.
##Generera bara en modell
Du genererar konturerna av ett objekt (singular)
Om du bara vill skapa en modell kan du göra:
rails g model Comment
- UpperCamelCase
- SINGULAR
Du kan också lägga till kolumnnamnen till detta om du vill:
rails g model Comment commenter:string body:text article:references
Dessa tabellkolonnnamn bör vara:
- lower_snake_case
- SINGULAR
Generering av en modell kommer att skapa dessa filer: