create_table :force => true calls drop_table first, and if it doesn't exist suppresses errors with "rescue nil". This still shows sql errors in the logs, however, and if you use the transactional_migrations plugin, it causes the entire migration to fail in any database that supports DDL transactions, such as postgresql.
The cleaner and more correct way to handle this is "DROP TABLE IF EXISTS <tablename>". MySQL, PostgreSQL, and SQLite3 all support this syntax, not sure about others. For the purposes of this patch I've changed the Postgresql adapter only, since that's the only one of the three that supports DDL transactions, and thus is most likely to be affected. If others agree this is a good approach, perhaps it should be made part of the abstract adapter.