t.references always creates an integer column. But that won't work as a foreign key if the referenced table's id isn't an integer. For example, it might be a uuid (see Rails 4 Postgres UUID Primary Key Guide
t.references could possibly look up the primary key column type of the table being referenced, and act accordingly.