Migrations seems to follow the RY principle: define parts of the schema
in:

* sql files
* migration files
* ruby code

For example to define a 'many_to_many relation' you have to add sql
code in the sql file, and add the 'has_and_belongs_to_many' macro in
Ruby code. And if you want to support multiple backends (for example
when you want to release an open source project like Typo) you have to
repeat your self again.

BTW, when using Migrations, notice how you use a method to define
attributes for your model class, not really oop.

Og makes all this natural. Have a look at www.nitrohq.com

regards,
-g.