Używanie przez Railsy ścisłych konwencji nazewnictwa oznacza, że wiele kodu rdzeniowego POWINNO być w tym samym formacie niezależnie od tego kto go pisze? Może to być napisane przez przyjaciela, kolegę lub komputer… to nie powinno mieć znaczenia, ponieważ te same zasady Rails stosują się do wszystkich.
To oznacza, że Rails może faktycznie wykonać pewne zadania za ciebie! Może faktycznie budować rzeczy i pisać kod w twoim imieniu…
Przybywając z innego języka, takiego jak PHP, może się to wydawać magią.
Szybkie odniesienie:
rails g scaffold Post name:string title:string content:textrails g controller Commentsrails g model Comment commenter:string body:text article:references
##Rails generatorPolecenie rails generate używa szablonów zaprojektowanych przez konwencję do tworzenia całej masy użytecznych rzeczy. Samo uruchomienie polecenia rails generate daje listę dostępnych generatorów:
rails generate
lub dla super-hakerów:
rails g
Istnieje wiele generatorów:
Rails:
- assets
- controller
- generator
- helper
- integration_test
- mailer
- migration
- model
- observer
- performance_test
- resource
- scaffold
- scaffold_controller
- session_migration
- task
.
Kawa:
- coffee:assets
Jquery:
- jquery:install
Js:
- js:assets
##Scaffolding w Railsach
Narzędzie scaffoldingowe Railsów to szybki sposób na wygenerowanie niektórych z głównych fragmentów kodu w aplikacji. To oszczędza mnóstwo czasu, gdy chcesz szybko zacząć działać! (To jest super fajne!)
Zależnie od tego, co chcesz stworzyć, scaffolding może automatycznie wygenerować wszystkie lub kombinację:
migrationsmodelsviewscontrollersunit_tests helpersstylesheetsjavascript
Może być jeszcze kilka innych plików, które tworzy… Nie jestem pewien, czy to kompletna lista!
##Skafolding całego zasobu
Skafoldingujesz rzeczy związane z obiektem (liczba pojedyncza)
Jeśli chcesz rusztować aplikację, musisz rusztować każdy zasób w ramach tej aplikacji. Gdybyś na przykład chciał stworzyć aplikację do blogowania – mógłbyś rusztować cały zasób Post:
rails g scaffold Post
Nazwa zasobu Post
musi być:
- UpperCamelCase
- SINGULAR
Nazwa ta będzie nazwą modelu, np. Post. Będzie to również nazwa klasy kontrolera (ale spolszczona), np. PostsController ORAZ nazwa tabeli (ale spolszczona), np. posts
Po nazwie klasy można dodać kolumny tabeli i ich datatypy.
rails g scaffold Post name:string title:string content:text
Nazwy tych kolumn tabeli powinny być:
- lower_snake_case
- SINGULAR
Jest to spowodowane tym, że każdy element Post ma mieć jedną wartość przechowywaną w każdej kolumnie.
Gdybyś uruchomił to rusztowanie, utworzyłoby ono następujące pliki:
Wewnątrz PostController, wszystkie metody RESTful zostaną utworzone i wszystkie będą miały odpowiadające im pliki widoku.
Po utworzeniu pliku migracji, w celu dokonania zmiany w bazie danych należy uruchomić:
rake db:migrate
##Generowanie tylko kontrolera
Kontroluje on wiele obiektów (więc jest to liczba mnoga)
Czasami, chcesz wygenerować tylko kontroler.
rails g controller Comments
Nazwa kontrolera musi być:
- UpperCamelCase
- PLURALIZED
To dlatego, że kontroler zajmuje się wieloma przykładami obiektu, więc powinien być w liczbie mnogiej.
To stworzy te pliki:
To NIE stworzy pliku migracji lub pliku modelu.
##Generowanie tylko modelu
Generujesz zarys obiektu (liczba pojedyncza)
Jeśli chcesz tylko stworzyć model, możesz zrobić:
rails g model Comment
- UpperCamelCase
- SINGULAR
Możesz również dodać do tego nazwy kolumn, jeśli chcesz:
rails g model Comment commenter:string body:text article:references
Te nazwy kolumn tabeli powinny być:
- lower_snake_case
- SINGULAR
Generowanie modelu utworzy te pliki:
.