前に rails g scaffold のカスタマイズという記事を書いたんだけど、model や migration のテンプレートがなかったので調べた。
デフォルトで使われるテンプレート
activerecord のソースに含まれている。
activerecord-3.2.12
└── lib
└── rails
└── generators
├── active_record
│ ├── migration
│ │ ├── migration_generator.rb
│ │ └── templates # rails g migration 用テンプレート
│ │ └── migration.rb
│ ├── migration.rb
│ ├── model
│ │ ├── model_generator.rb
│ │ └── templates # rails g model 用テンプレート
│ │ ├── migration.rb
│ │ ├── model.rb
│ │ └── module.rb
│ ├── observer
│ │ ├── observer_generator.rb
│ │ └── templates # rails g observer 用テンプレート
│ │ └── observer.rb
│ └── session_migration
│ ├── session_migration_generator.rb
│ └── templates # rails g session_migration 用テンプレート
│ └── migration.rb
└── active_record.rb
rails g scaffold
時には rails g model
と同じテンプレートが利用される模様。
カスタマイズ
Rails アプリケーションの lib/templates/active_record/ジェネレータ名/テンプレート名.rb
にテンプレートのファイルを置くと優先的に利用される。
たとえば rails g scaffold
や rails g model
で生成される migration のテンプレートを変更したいなら、activerecord-3.2.12/lib/rails/generators/active_record/model/templates/migration.rb
を、lib/templates/active_record/model/migration.rb
にコピーして変更を加えればよい。
$ cd my_rails_app
$ mkdir -p lib/templates/active_record/model
$ cp `bundle show activerecord`/lib/rails/generators/active_record/model/templates/migration.rb lib/templates/active_record/model/migration.rb