Any easy way to change a Name for a Model?

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?

Thanks

nobosh wrote:

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

Best,

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?

migrations dont fill up , and if you want to get the result of all migrations on one go , do rake db:schema , it will load the schema.

nobosh wrote:

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.

Best,

I feel good when I use Ruby, I feel bad when I use PHP.

:slight_smile:

You also have to search and replace all occurrences of Books. I hope you have some tests to back you up.

Programming is not generally about feelings.

I feel good when I use Ruby, I feel bad when I use PHP.

Stop sleeping with your computer!