As of Rails 3.0 and later, you can use column_exists? to check for the existance of a column.
unless column_exists? :statuses, :hold_reason
add_column :statuses, :hold_reason, :string
end
There’s also a table_exists? function, which goes as far back as Rails 2.1.