Suche…


Einführung

Verwendung: rails generate GENERATOR_NAME [args] [options] .

Verwenden Sie rails generate um verfügbare Generatoren aufzulisten. Alias: rails g .

Parameter

Parameter Einzelheiten
-h / --help Hilfe zu jedem Generator-Befehl erhalten
-p / --pretend Pretend Mode: Generator ausführen, aber keine Dateien erstellen oder ändern
field:type 'Feldname' ist der Name der zu erstellenden Spalte und 'Typ' ist der Datentyp der Spalte. Die möglichen Werte für 'type' in field:type sind im Abschnitt "Anmerkungen" angegeben.

Bemerkungen

Die möglichen Werte für 'Typ' in field:type sind:

Datentyp Beschreibung
:string Für kleinere Textstücke (hat normalerweise eine Zeichenbegrenzung von 255)
:text Für längere Textstücke wie einen Absatz
:binary Speichern von Daten einschließlich Bildern, Audios und Videos
:boolean Speichern von wahren oder falschen Werten
:date Nur das Datum
:time Nur die zeit
:datetime Datum und Uhrzeit
:float Schwimmer ohne Genauigkeit lagern
:decimal Schwimmer präzise lagern
:integer Speichern ganzer Zahlen

Schienen erzeugen Modell

Um zu erzeugen ActiveRecord Modell , das automatisch die richtige db Migrationen & vorformulierten Testdateien für Ihr Modell erstellt, geben Sie diesen Befehl

rails generate model NAME column_name:column_type

'NAME' ist der Name des Modells. 'Feld' ist der Name der Spalte in der DB-Tabelle und 'Typ' ist der Spaltentyp (zB name:string oder body:text ). Überprüfen Sie den Abschnitt "Bemerkungen" auf eine Liste der unterstützten Spaltentypen.

Zum Einrichten von Fremdschlüsseln fügen Sie belongs_to:model_name .

Angenommen, Sie wollten ein User einrichten, das einen username und eine email und zu einer School gehört. username Sie Folgendes ein

rails generate model User username:string email:string school:belongs_to

rails g ist eine Abkürzung für rails generate . Dies würde das gleiche Ergebnis erzielen

rails g model User username:string email:string school:belongs_to

Schienen erzeugen Migration

Sie können eine Rails-Migrationsdatei mit dem folgenden Befehl vom Terminal aus generieren:

rails generate migration NAME [field[:type][:index] field[:type][:index]] [options]

Für eine Liste aller vom Befehl unterstützten Optionen können Sie den Befehl ohne Argumente ausführen, da rails generate migration in rails generate migration .

Wenn Sie zum last_name Felder first_name und last_name zur users hinzufügen möchten, können Sie first_name tun:

rails generate migration AddNamesToUsers last_name:string first_name:string

Rails erstellt die folgende Migrationsdatei:

class AddNamesToUsers < ActiveRecord::Migration[5.0]
  def change
    add_column :users, :last_name, :string
    add_column :users, :first_name, :string
  end
end

Wenden Sie nun die ausstehenden Migrationen auf die Datenbank an, indem Sie Folgendes im Terminal ausführen:

5,0
rake db:migrate
5,0
rails db:migrate

Hinweis: Um noch weniger zu tippen, können Sie generate durch g ersetzen.

Schienen erzeugen Gerüst

HAFTUNGSAUSSCHLUSS : Gerüste werden nicht empfohlen, es sei denn, es handelt sich um sehr herkömmliche CRUD-Apps / -Tests. Dadurch können viele Dateien (Ansichten / Modelle / Controller) generiert werden, die in Ihrer Webanwendung nicht benötigt werden. Dies führt zu Kopfschmerzen (bad :().

Um ein voll funktionsfähiges Gerüst für ein neues Objekt zu erstellen, einschließlich Modell, Controller, Ansichten, Assets und Tests, verwenden Sie den Befehl rails g scaffold .

$ 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

Dann können Sie rake db:migrate ausführen, um die Datenbanktabelle einzurichten.

Dann können Sie die http: // localhost: 3000 / Widgets besuchen und sehen ein voll funktionsfähiges CRUD-Gerüst.

Schienen generieren Controller

Wir können einen neuen Controller mit rails g controller Befehl erstellen.

$ bin/rails generate controller controller_name

Der Controller-Generator erwartet Parameter in der Form generate controller ControllerName action1 action2 .

Im Folgenden wird ein Greetings-Controller mit einer Aktion von Hallo erstellt.

$ bin/rails generate controller Greetings hello

Sie sehen die folgende Ausgabe

     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

Dies generiert Folgendes

Datei Beispiel
Controller-Datei greetings_controller.rb
Datei ansehen hello.html.erb
Funktionstestdatei greetings_controller_test.rb
Helfer anzeigen greetings_helper.rb
JavaScript-Datei greetings.coffee

Es werden auch Routen für jede Aktion in routes.rb



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow