Essentially, David, this is a *problem* with ActiveRecord.
ActiveRecord is in the wrong here if it's being case-sensitive to
the database's meta-data in the general case.
Active Record places a number of naming constraints of your database.
Just treat the forced lower-case as one such. In the databases where Id
is the same as ID and credit_ratings as CREDIT_RATINGS, it should then
be no problem to rename the fields. For cases where it is significant,
like the database I choose to use for all my projects, it's nice just
to be consistent and not have code to massage cases.
Remember, Active Record is first and foremost an ORM mapper for new
applications. There are some options to tweak the mapping, but they're
really only there for grace and flute playing. Active Record is
basically unashamed to strongly suggest (or even mandate) a naming
convention that'll lead to less software for me to write and maintain.
And less configuration for you to contemplate.
...but the reality is that ActiveRecord is in the wrong for
case-sensitivity on the database side.
I don't think reality have too much to do with our opinions here

. I
fully recognize that other choices could have been made for the naming
conventions in Active Record -- given another designer. I don't
recognize my choices to be "wrong" by them being different that yours
would have been.
But I'm glad you're passionate enough about Active Record to construct
a reality around how you think it should be designed. I think a lot of
good design decisions can be made when such a reality is picked and
held dear. But when giving recommendations on a piece of software one
didn't write, it's usually prudent to examine the other guys reality
before constructing your own
Active Record is a MySQL-driven ORM mapper. It now has adapters for
PostgreSQL, SQLite, and latest SQL Server, but they all derive from the
principles of the original MySQL driver. So in the eyes of Active
Record, databases that deviate from the MySQL-way are the ones that are
"wrong" and special programming is needed in their adapters to emulate
MySQL behavior. That's the reality picked
Sorry, but I lived and breathed real RDBMS systems for a few years,
and MySQL is wrong (and inconsistent! -- it depends on the
underlying filesystem, not on the inherent nature of the database).
If ActiveRecord's behaviour is based on that, then ActiveRecord
needs to change.
Jamis Buck had an example from Oracle also being case sensitive, so it
seems to be somewhat more widespread than just MySQL. And as I said,
Active Record was founded on MySQL, so when behavior differs between
RDBMS, AR will side by MySQL by default (strong pressures might revert
that default, but I don't think this is a strong pressure).
Thanks for sharing your opinions, though, Austin.
--
David Heinemeier Hansson,
http://www.basecamphq.com/ -- Web-based Project Management
http://www.rubyonrails.org/ -- Web-application framework for Ruby
http://macromates.com/ -- TextMate: Code and markup editor (OS X)
http://www.loudthinking.com/ -- Broadcasting Brain