Hello, I've been building an app recently that has a model Books that
is a database table and linked to several models/controllers. I
recently learned that instead of Books it needs to be called
publications (just an example)...
I now want to update the database and all the mentions throughout the
app. Is there a simple way to do that in Rails 3. Or do I have to
migrate that particular table (via version?) and manually update all
the references throughout the app?
Hello, I've been building an app recently that has a model Books
That should be Book. Rails model names are singular by convention.
Table names are plural.
that
is a database table
No! Models are not database tables; please don't think of them that
way. They *refer* to database tables, but the Ruby objects and the DB
records and tables are not the same thing.
and linked to several models/controllers. I
recently learned that instead of Books it needs to be called
publications (just an example)...
I now want to update the database and all the mentions throughout the
app. Is there a simple way to do that in Rails 3. Or do I have to
migrate that particular table (via version?)
Version? Huh? Just write a migration that changes the name of the
table.
Note also that you can use set_table_name to specify a different table
name than the one Rails would expect. Thus, you can change the class
name or the table name without also changing the other. I wouldn't
advise breaking the Rails conventions unless you have a good reason to.
and manually update all
the references throughout the app?
Yup. Your automated tests will break when they encounter the old class
name and let you know where to change it.
Thanks Marnen. Regarding writing a migration that changes the name of
the table, for some reason I feel like this situation is going to
happen frequently and that could fill up the migrations. GIven that
I'm only a few weeks into development and I have no real data, for
some reason I feel it'd be cleaner to revert the book migration and
add one that's correct?
Thanks Marnen. Regarding writing a migration that changes the name of
the table, for some reason I feel like this situation is going to
happen frequently and that could fill up the migrations.
You can't fill up migrations.
GIven that
I'm only a few weeks into development and I have no real data, for
some reason
For what reason?
I feel
Programming is not generally about feelings.
it'd be cleaner to revert the book migration and
add one that's correct?
You could in this case, yes. I normally don't advise it. And of course
it would be suicidally stupid to do so I. The general case where you do
have data.