Comment écrire conditionnelle migrations dans les rails?

Je suis à la recherche de façons d'écrire les migrations dans des rails qui peuvent être exécutées sur la base de données plusieurs fois sans faute.

Par exemple, supposons que j'ai cette migration:

class AddUrlToProfile < ActiveRecord::Migration
  def self.up
    add_column :profile, :url, :string
  end

  def self.down
    remove_column :profile, :url
  end
end

Si le url colonne existe déjà dans le Profile table (si le schéma.rb a été modifié de façon inattendue, par exemple), mon échec de la migration de dire que c'est un doublon!

Donc comment exécuter cette migration que si elle a pour?

Grâce