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
generate
vervangen 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