Defining a Unique Field Using Migrations

I've seen this come up quite a few times so it warrants a permanent reference here:

How its done

In your migraton put:

add_index :permissions_roles, [:permission_id, :role_id], 'unique'

If you're using it as a key make it an index as well

add_index :permissions_roles, [:permission_id, :role_id], 'unique', :index => true

Create Custom Column types in Rails Migrations

The Problem

Your doing migrations for a database and you must specify a column with a database specific type. You've checked all of the ActiveRecord migration options and none fit the bill.

An Example Situation

You must specify bigint or int2vector or polygon for a PostgreSQL database.

The Solution

Here's what you can do to solve the problem of ActiveRecord migration limitations for column types: