Rails holds some conventions that enforcement of data integrity should be done in the application, not in the database.
For example, Rails even supports some database designs that cannot use foreign keys, such as Polymorphic Associations.
Basically, Rails conventions have treated the database as a static data storage device, not an active RDBMS. Rails 2.0 is finally supporting some more realistic features of SQL databases. It’s no surprise that the result will be that developing with Rails will become more complex than it was in version 1.0.