Lチカ開発ブログ

https://l-chika.com/の開発ブログ

rails generateコマンドで忘れがちな事「rails g -h」

rails generate コマンドで、よく使うけど忘れてしまいがちな以下をメモ。

  • generateが可能な事・オプション。Rails標準でgenerateできるものは大体理解しているが、追加した gem のgenerate方法
  • 生成されるものを制限するskipオプションについて
  • モデルを作成するgenerateで指定する型
  • limit の長さでRDBの型が異なる場合の長さの指定

generate

Rails標準に加え、generateを提供しているgemを調べるとき。 モデルを生成した後からrspecfactory_girl のgemを追加して、対応するモデルのspec・factory_girlのファイルをそれぞれ追加生成する場合に、いちいち自分でいちから生成するのでなく generate で生成する場合の調べ方。

以下、rspecfactory_girl をインストールして、rails g -h した結果。

$ ./bin/rails g -h
-- 中略 --
Rails:
  assets
  channel
  controller
  generator
  helper
  integration_test
  jbuilder
  job
  mailer
  migration
  model
  resource
  scaffold
  scaffold_controller
  task

FactoryGirl:
  factory_girl:model

Js:
  js:assets

Rspec:
  rspec:controller
  rspec:feature
  rspec:helper
  rspec:install
  rspec:integration
  rspec:job
  rspec:mailer
  rspec:model
  rspec:observer
  rspec:request
  rspec:scaffold
  rspec:view

TestUnit:
  test_unit:controller
  test_unit:generator
  test_unit:helper
  test_unit:integration
  test_unit:job
  test_unit:mailer
  test_unit:model
  test_unit:plugin
  test_unit:scaffold

例えば、Userモデルのfactory_girlを生成する場合

./bin/rails g factory_girl:model user

さらにgenerate ごとの詳細を知りたければ、そのヘルプを見ることが可能。

$ ./bin/rails g scaffold -h

skip

scaffoldで assetshelper を生成したくないとき。

$ ./bin/rails g scaffold product name:string url:string --skip-assets --skip-helper
      invoke  active_record
      create    db/migrate/20170202010817_create_products.rb
      create    app/models/product.rb
      invoke  resource_route
       route    resources :products
      invoke  scaffold_controller
      create    app/controllers/products_controller.rb
      invoke    erb
      create      app/views/products
      create      app/views/products/index.html.erb
      create      app/views/products/edit.html.erb
      create      app/views/products/show.html.erb
      create      app/views/products/new.html.erb
      create      app/views/products/_form.html.erb
      invoke    jbuilder
      create      app/views/products/index.json.jbuilder
      create      app/views/products/show.json.jbuilder
      create      app/views/products/_product.json.jbuilder

qiita.com

利用可能な型

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

等で、カラムのtypeを指定する場合の利用可能な型

$ ./bin/rails g model -h
- 中略 -
    You can use the following types:

        integer
        primary_key
        decimal
        float
        boolean
        binary
        string
        text
        date
        time
        datetime

qiita.com

limitの長さ

integerとtextは limit オプションの長さによってRDBの型が変わる

qiita.com

関連するおすすめ本

Ruby on Rails 5 超入門

Ruby on Rails 5 超入門