I've only gone through the book once, and this is my first project, so
I must have forgotten/missed what was there. The index didn't help
much 
now that I have the book in front of me, there isn't a large section
discussing this, it was actually in a small footnote on page 141 where
Dave talks about some developers not bothering with database defined
foreign key constraints while he personally prefers to use them.
I am wondering about whether or not I need the model to enforce this
information or if I can rely on the adapter to throw when the db
refuses to do a save. (Note that in my case, the db already has the
information.)
If you rely only on the database to throw an exception when a
constraint is violated, how will you filter this down to your rails
app? You'll have to make sure you catch any exceptions (which of
course you should be doing anyways), determine what exception was
raised and then display the appropriate error. Wouldn't it be easier
to simply use rails' built in validations to handle this, and use
error_messages_for to display the messages to the user? (and have the
database constraints in place to offer you further protection in the
event that you write some bad code)
It's not clear to me that there is much of a
difference.
like I mentioned in my previous post, using Rails to enforce data
integrity is database agnostic and it keeps all your logic in the
model. If another programmer were to work on your application, they'd
be able to quickly see all the validations directly from within Rails,
whereas if you relied solely on the database, they'd have to go
searching in another place to find this information. Plus, you gain a
bunch of convenience methods when using Rails' built in validations.
You seem to be implying that an attempt to write an
overly-large string will silently truncate in the db? (Uggh) Does
RoR require an explicit size check when the size is the default?
yes, the data will be silently truncated and rails does need an
explicit size check to prevent this from happening (or at least to
prevent the record from being saved if the field is over a certain
number of characters)
Of course, if this were the development list, I would be wondering why
RoR cannot read all of this stuff from the db & stick it into the
model the same way that it does the column names & types. 
Here's a plugin which may be of use to you:
http://drnicwilliams.com/2006/08/07/ann-dr-nics-magic-models/
Adam