I've read the (many) re-posts about problems around scaffolding in
Rails 2.0 and have followed a number of tutorials and fully understand
"how to scaffold" from a technical perspective, but I don't
understand the *mindset* of how to use the new scaffolding. It seems
like a productivity- / agility- regress and I'm thinking I may have
failed to properly grok the new setup. In the interest of full
disclosure, I'm coming back to Rails after being in other toolkits for
about 9 months.
Thanks to the intrepid work of Sean Lynch at (
) I found a tutorial that would familiarize me with the raw "how to
I followed his tutorial's step of:
``ruby script/generate scaffold Movie''
Great! From that point I filled in the "columns" in the migration as I
had done in Rails 1.x. All I should need to do is run ``rake
db:migrate'' and try adding a new record via the dynamically-created
When I started the server and navigated localhost:3000/movies I had
the "create new" button. When I pushed that button there were no text
widgets to enter *despite having defined the columns that corresponded
to said widgets* having been added to the migration ( I have a lengthy
blog post about how my diagnostics went, for anyone else's edification
at http://stevengharms.net/?p=1063 ). In short the scaffold that had
been created knew nothing of the columns I had added in the migration
and, as such, the 'new' view had no widgets.
This struck me as well, wrong. On Sean's post another user confirms
the same experience. I have tried it with sqlite3 / mysql / postgres
Research showed that the scaffold had remained static relative to the
time that I had done the original aenemic invocation. Per ``script/
generate scaffold --help'':
./script/generate scaffold post` # no attributes, view will be anemic
To fix this I had to re-issue the script/generate command with all the
attributes in "final draft" mode ( ``script/generate scaffold movie
title:string text:description one_sheet_url:string'' ) and then over-
write the old templates ( output stored below, for legibility, Fig.
The solution implies:
- You have to get the script/generate command's "attributes"
arguments *perfect* at time of creation OR
- You do this overwriting thing that I describe below.
As I recall Rails 1.x's dynamic scaffolding allowed us to use a
scaffold flexibly strictly based on migrations and rake db:migrate.
This flexibility allowed us to "sketch" ideas very rapidly. Or is it
considered a "Good Thing" that you get a "perfected" ``generate
scaffold'' command at some point? If so, what's the reasoning? Am I
missing some sort of rake command that "refreshes" the scaffold
Based on the comments at Sean's site and some of the questions in the
comments to DHH's Rails 2. announcement I think there are others
grappling with this quandry as well. Can anyone help?
bash-3.2$ script/generate scaffold movie title:string text:description
overwrite app/views/movies/index.html.erb? (enter "h" for help)
overwrite app/views/movies/show.html.erb? (enter "h" for help)
overwrite app/views/movies/new.html.erb? (enter "h" for help) [Ynaqdh]
overwrite app/views/movies/edit.html.erb? (enter "h" for help)
Another migration is already named create_movies: db/migrate/