LoginSignup
15
15

More than 5 years have passed since last update.

rails g scaffold で生成される model や migration のコードをカスタマイズ

Last updated at Posted at 2014-03-25

前に rails g scaffold のカスタマイズという記事を書いたんだけど、model や migration のテンプレートがなかったので調べた。

参考: http://stackoverflow.com/questions/19404133/custom-scaffolding-rails-add-a-method-in-every-model-class

デフォルトで使われるテンプレート

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 scaffoldrails 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

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15