Warning: Don't implement an ActiveRecord model called Specimen

I've recently upgraded an application to use Rails 3.1, and in the course of so doing encountered some strange behaviour that I hope will not be experienced by others. I have several ActiveRecord model objects in my application: User, Discussion, Image and Specimen. These all worked absolutely fine in RoR 2.3.8. But in 3.1, Specimen would do nothing but refuse to find its associated database table ('Could not find table "specimen"'), nor would it expose any of its ActiveRecord methods. The other objects (User, Discussion, Image) worked no problem at all. In spite of this, I was able to up, down, change and do all the usual migrations to the Specimen model as expected. The solution was to rename all references in the application from Specimen to Specimn (yes, I know), which put everything back on track. I can find no mention of this word in any reserved word list (http:// oldwiki.rubyonrails.org/rails/pages/ReservedWords, http://wiki.rubyonrails.org/rails/pages/reservedwords#reserved_words_you_can_t_use), nor in the SQLite documentation. Something to watch for, or have I missed something obvious?

Hi!

Search for “inflections” , “rails irregular nouns”.

http://guides.rubyonrails.org/active_support_core_extensions.html#inflections

Best Regards,

Everaldo

I suspect you've got an initializer that added the correct pluralization rule that isn't getting picked up in 3.1. Out-of-the-box (on both Rails 2 and 3), "specimen" works like this:

"specimen".pluralize => "specimen" "specimen".singularize => "speciman"

--Matt Jones

Matt Jones wrote in post #1024650:

I suspect you've got an initializer that added the correct pluralization rule that isn't getting picked up in 3.1. Out-of-the-box (on both Rails 2 and 3), "specimen" works like this:

"specimen".pluralize => "specimen" "specimen".singularize => "speciman"

Rails 3.1 (just to clarify):