I\'ve generated a new rails 4 (rc1) project using rails new
and generated a scaffold using rails g scaffold
.
As expected it has created the mi
To answer the "why" part:
The relevance of scaffolding in Rails has somewhat shifted over the years. It is no longer meant to generate necessary code which couldn't be abstracted away easily. Today it is mostly an educational tool to provide you with a somewhat dynamic example and demonstrate best practices. (That's also the reason why they are sprinkled with comments with disputable usefulness)
In other words the generated files are meant to tell you:
If you are going to use Rails, here is a good way how you could do it.
or in your specific case:
If you are going to use JBuilder, here is a good way to generate JSON.
They are not meant to tell: "This is how it must be done." or "You have to keep all the generated stuff because it's necessary."
As said before, Rails 4 seems to generate the files as a way to have a template for responding to a JSON query. So let's say you have "scaffolded" a model Car
, then it will respond with a HTML page and a detail view of car (id 1) if you go /car/1
.
Then if you go to /car/1.json
, it will render the show.json.jbuilder
file. There also seems to be some kind of automatic mechanism as the show
method is empty when scaffolding:
def show
end
Rails 4 scaffold generator creates jbuilder files because the gem 'Jbuilder' is in the Gemfile. If you remove this from your Gemfile
this functionality will stop.
Jbuilder gem included in RoR 4 by default. You could read about it on its page. There is a cast about it: Railscasts #320.