It’s been fun having the scaffold generator exist as a part of Rails since The Beginning Of Time, but I think its time is now up. It has been abused time and time again, and most often leads to confusion amongst people who are new to Rails.
This confusion happens when a user first generates a scaffold and sees that it is good. They can perform CRUD actions on a resource using one command?! WOW!
Then they try to modify the scaffold and run into problems. First of all: how do they add an action to the controller? Do they need to run another command? How do they then define a route for that action? A template?
If they were to not use the scaffold generator from the beginning, I believe they would have less confusion. They would know how to add another action to the controller and a template for that action because this would be how they’re doing it from the start. Learning how to define a route for a new action in the controller is something easily learnable by reading the routing guide.
I think that we can fix this problem in one of two ways, the latter more extreme than the first one.
The first way is that we completely change the Getting Started Guide to simply mention the scaffold generator, but then show people the “correct” way of generating a controller (rails g controller) and adding actions to it one by one, adding a model as its needed, and using similar practices to how you would do it in the “real world”.
The second way, and sorry if this sounds a little extreme, is to completely remove the scaffold generator from the core of Rails itself. This means that there wouldn’t even be the option to run the scaffold generator for newbies. You could then extract this out into a gem if you really wanted people to have the option for it. However, if this path was taken it should be made clear that this is not the “sanctioned” way to create controllers.