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