Ruby on Rails
Rails genereren opdrachten
Zoeken…
Invoering
Gebruik: rails generate GENERATOR_NAME [args] [options] .
Gebruik rails generate om beschikbare generatoren weer te geven. Alias: rails g .
parameters
| Parameter | Details |
|---|---|
-h / --help | Hulp bij elk generatorcommando |
-p / --pretend | Fantasiemodus: generator uitvoeren maar geen bestanden maken of wijzigen |
field:type | 'veldnaam' is de naam van de kolom die moet worden gemaakt en 'type' is het gegevenstype van de kolom. De mogelijke waarden voor 'type' in field:type worden gegeven in de sectie Opmerkingen. |
Opmerkingen
De mogelijke waarden voor 'type' in field:type zijn:
| Data type | Beschrijving |
|---|---|
:string | Voor kleinere stukjes tekst (heeft meestal een tekenlimiet van 255) |
:text | Voor langere stukken tekst, zoals een paragraaf |
:binary | Gegevens opslaan, inclusief afbeeldingen, audio en video's |
:boolean | Waar of onwaar waarden opslaan |
:date | Alleen de datum |
:time | Alleen de tijd |
:datetime | Datum en tijd |
:float | Floats opslaan zonder precisie |
:decimal | Drijvers met precisie opslaan |
:integer | Hele getallen opslaan |
Rails genereren model
Voer deze opdracht in om een ActiveRecord model te genereren dat automatisch de juiste DB-migraties en standaardtestbestanden voor uw model maakt.
rails generate model NAME column_name:column_type
'NAAM' is de naam van het model. 'veld' is de naam van de kolom in de DB-tabel en 'type' is het kolomtype (bijvoorbeeld name:string of body:text ). Controleer het gedeelte Opmerkingen voor een lijst met ondersteunde kolomtypen.
Als u externe sleutels wilt instellen, voegt u belongs_to:model_name .
Stel dat u een User wilt instellen dat een username en email en tot een School behoort. Typ het volgende in
rails generate model User username:string email:string school:belongs_to
rails g is afkorting voor rails generate . Dit zou hetzelfde resultaat opleveren
rails g model User username:string email:string school:belongs_to
Rails genereren migratie
U kunt een rails-migratiebestand vanaf de terminal genereren met de volgende opdracht:
rails generate migration NAME [field[:type][:index] field[:type][:index]] [options]
Voor een lijst met alle opties die door de opdracht worden ondersteund, kunt u de opdracht zonder argumenten uitvoeren, omdat in rails generate migration .
Bijvoorbeeld, als u wilt toevoegen first_name en last_name velden om users tafel, kunt u doen:
rails generate migration AddNamesToUsers last_name:string first_name:string
Rails maakt het volgende migratiebestand aan:
class AddNamesToUsers < ActiveRecord::Migration[5.0]
def change
add_column :users, :last_name, :string
add_column :users, :first_name, :string
end
end
Pas nu de uitstaande migraties toe op de database door het volgende in de terminal uit te voeren:
rake db:migrate
rails db:migrate
Opmerking: voor nog minder typen kunt u
generatevervangen doorg.
Rails genereren steigers
DISCLAIMER : Steigers worden niet aanbevolen, tenzij voor zeer conventionele CRUD-apps / testen. Dit kan veel bestanden (weergaven / modellen / controllers) genereren die niet nodig zijn in uw webtoepassing en dus hoofdpijn veroorzaken (slecht :().
Gebruik de opdracht rails g scaffold om een volledig werkende steiger voor een nieuw object te genereren, inclusief model, controller, views, activa en tests.
$ rails g scaffold Widget name:string price:decimal
invoke active_record
create db/migrate/20160722171221_create_widgets.rb
create app/models/widget.rb
invoke test_unit
create test/models/widget_test.rb
create test/fixtures/widgets.yml
invoke resource_route
route resources :widgets
invoke scaffold_controller
create app/controllers/widgets_controller.rb
invoke erb
create app/views/widgets
create app/views/widgets/index.html.erb
create app/views/widgets/edit.html.erb
create app/views/widgets/show.html.erb
create app/views/widgets/new.html.erb
create app/views/widgets/_form.html.erb
invoke test_unit
create test/controllers/widgets_controller_test.rb
invoke helper
create app/helpers/widgets_helper.rb
invoke jbuilder
create app/views/widgets/index.json.jbuilder
create app/views/widgets/show.json.jbuilder
invoke assets
invoke javascript
create app/assets/javascripts/widgets.js
invoke scss
create app/assets/stylesheets/widgets.scss
Vervolgens kunt u rake db:migrate om de databasetabel in te stellen.
Ga dan naar http: // localhost: 3000 / widgets en je ziet een volledig functionele CRUD-steiger.
Rails genereren controller
we kunnen een nieuwe controller maken met rails g controller .
$ bin/rails generate controller controller_name
De controllergenerator verwacht parameters in de vorm van het generate controller ControllerName action1 action2 .
Het volgende maakt een groeten-controller met een actie van hallo.
$ bin/rails generate controller Greetings hello
U ziet de volgende uitvoer
create app/controllers/greetings_controller.rb
route get "greetings/hello"
invoke erb
create app/views/greetings
create app/views/greetings/hello.html.erb
invoke test_unit
create test/controllers/greetings_controller_test.rb
invoke helper
create app/helpers/greetings_helper.rb
invoke assets
invoke coffee
create app/assets/javascripts/greetings.coffee
invoke scss
create app/assets/stylesheets/greetings.scss
Dit genereert het volgende
| het dossier | Voorbeeld |
|---|---|
| Controller bestand | greetings_controller.rb |
| Bestand bekijken | hello.html.erb |
| Functioneel testbestand | greetings_controller_test.rb |
| Bekijk Helper | greetings_helper.rb |
| JavaScript-bestand | greetings.coffee |
Het voegt ook routes toe voor elke actie in routes.rb