How can I replace the template of the scaffold_controller generator?

46 views Asked by At

When we use the command rails g scaffold Post title content it will generate many files according to some templates located inside railties.

There is even a command that we can copy all templates to our application:

rake app:templates:copy

But there is one template that isn't replaced by it's counterpart inside \lib'. That's scaffold_controller/controller.rb.tt`. I'm trying to search how can I replace this with no luck so far.

So that's my question. How can I change the template that writes the controller when we are scaffolding?

1

There are 1 answers

0
mechnicov On BEST ANSWER

1. To override controller scaffolding generator use lib/templates/rails/scaffold_controller/controller.rb.tt

echo 'Overriden for rails g scaffold' > lib/templates/rails/scaffold_controller/controller.rb.tt
rails g scaffold user > /dev/null 2>&1 && cat app/controllers/users_controller.rb
Overriden for rails g scaffold
rails g scaffold_controller posts > /dev/null 2>&1 && cat app/controllers/posts_controller.rb
Overriden for rails g scaffold

2. To override controller generator use lib/templates/rails/controller/controller.rb.tt

echo 'Overriden for rails g controller' > lib/templates/rails/controller/controller.rb.tt
rails g controller books index > /dev/null 2>&1 && cat app/controllers/books_controller.rb
Overriden for rails g controller