Ruby on Rails
Railsはコマンドを生成する
サーチ…
前書き
使用法: rails generate GENERATOR_NAME [args] [options] 。
rails generateを使用して、使用可能なジェネレータをリストします。エイリアス: rails g 。
パラメーター
| パラメータ | 詳細 |
|---|---|
-h / --help | ジェネレータコマンドに関するヘルプを表示する |
-p / --pretend | Pretend Mode:ジェネレータを実行しますが、ファイルを作成または変更しません。 |
field:type | 'field-name'は作成する列の名前で、 'type'は列のデータ型です。 field:type 'type'に指定できる値は、備考欄にあります。 |
備考
field:type 'type'に指定できる値は次のとおりです。
| データ・タイプ | 説明 |
|---|---|
:string | 小さなテキストの場合(通常は文字制限が255です) |
:text | 段落のような長いテキストの場合 |
:binary | 画像、オーディオ、ビデオを含むデータの保存 |
:boolean | 真偽値の格納 |
:date | 日付のみ |
:time | 時間だけ |
:datetime | 日時 |
:float | 精度のないフロートの保存 |
:decimal | 浮動小数点数を精度で格納する |
:integer | 整数の格納 |
Railsはモデルを生成する
モデルに適切なdbマイグレーションとボイラープレート・テスト・ファイルを自動的に作成するActiveRecordモデルを生成するには、このコマンドを入力します
rails generate model NAME column_name:column_type
'NAME'はモデルの名前です。 'field'はDBテーブルの列の名前で、 'type'は列の型です(例: name:stringまたはbody:text )。サポートされている列の種類の一覧については、「備考」を参照してください。
外部キーを設定するには、 belongs_to:model_name追加します。
だから、 usernameとemail持ち、 Schoolに属しているUserモデルをセットアップしたければ、次のように入力します
rails generate model User username:string email:string school:belongs_to
rails gは、 rails generateための略語です。これにより同じ結果が得られます
rails g model User username:string email:string school:belongs_to
Railsによる移行の生成
次のコマンドを使用して、端末からレール移行ファイルを生成できます。
rails generate migration NAME [field[:type][:index] field[:type][:index]] [options]
このコマンドでサポートされているすべてのオプションのリストについては、 rails generate migrationように引数なしでコマンドを実行できます。
たとえば、 first_nameフィールドとlast_nameフィールドをusersテーブルに追加する場合は、次のようにします。
rails generate migration AddNamesToUsers last_name:string first_name:string
Railsは次の移行ファイルを作成します。
class AddNamesToUsers < ActiveRecord::Migration[5.0]
def change
add_column :users, :last_name, :string
add_column :users, :first_name, :string
end
end
次に、端末で次のコマンドを実行して、保留中の移行をデータベースに適用します。
rake db:migrate
rails db:migrate
注:入力をさらに少なくするために、
generateをg置き換えることができます。
レールは足場を生成する
免責事項:非常に従来型のCRUDアプリケーション/テスト用でない限り、足場は推奨されません。これはあなたのWebアプリケーションで不要な多くのファイル(ビュー/モデル/コントローラ)を生成し、頭痛(悪い:()を引き起こす可能性があります。
モデル、コントローラ、ビュー、アセット、およびテストを含む新しいオブジェクト用の完全な作業用足場を生成するには、 rails g scaffoldコマンドを使用し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
次に、 rake db:migrateを実行してデータベーステーブルを設定します。
次に、 http:// localhost:3000 / widgetsにアクセスすると、完全に機能的なCRUDスカフォールドが表示されます。
レール生成コントローラ
rails g controllerコマンドで新しいコントローラを作成することができます。
$ bin/rails generate controller controller_name
コントローラージェネレーターは、 generate controller ControllerName action1 action2をgenerate controller ControllerName action1 action2形式でパラメーターを予期しています。
次の例は、helloのアクションを持つGreetingsコントローラを作成します。
$ bin/rails generate controller Greetings hello
次の出力が表示されます
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
これにより以下が生成されます
| ファイル | 例 |
|---|---|
| コントローラファイル | greetings_controller.rb |
| ファイルを閲覧する | hello.html.erb |
| 機能テストファイル | greetings_controller_test.rb |
| ビューヘルパー | greetings_helper.rb |
| JavaScriptファイル | greetings.coffee |
また、 routes.rb各アクションのルートも追加しroutes.rb