title: Error when adding a column with several options
body: <p>I have the following migration in the system I'm working on:</p>
  
  <pre><code>class CreateEstoqueGruposProdutos &lt; ActiveRecord::Migration
    def change
      create_table :est_grupos_produtos do |t|
        t.integer :grupos_produtos_nivel_id, :null =&gt; false, foreign_key: { references: :est_grupos_produtos_niveis, on_update: :cascade, on_delete: :restrict }, index: { with: [:id], unique: true, :name =&gt; 'unique_grupos_produtos_id_nivel' }
  
        t.timestamps
      end
    end
  end
  </code></pre>
  
  <p>It basically creates a table with an integer column that references (foreign_key) another table and add some options to the index.</p>
  
  <p>Now, I need to do the same thing with a table that already exists. I need to add a column like this to a table with existing data.</p>
  
  <p>I'm trying to do:</p>
  
  <pre><code>class ChangeCadastrosPerfilNiveis &lt; ActiveRecord::Migration
    def change
      add_column :cad_perfil_niveis, :perfil_niveis_nivel_id, :integer, :null =&gt; false, :default =&gt; 1, foreign_key: { references: :cad_perfil_niveis_niveis, on_update: :cascade, on_delete: :restrict }, index: { with: [:id], unique: true, :name =&gt; 'unique_perfil_niveis_id_nivel' }
    end
  end
  </code></pre>
  
  <p>It's not working. The error output is:</p>
  
  <pre><code>-- add_column(:cad_perfil_niveis, :perfil_niveis_nivel_id, :integer, {:null=&gt;false, :default=&gt;1, :foreign_key=&gt;{:references=&gt;:cad_perfil_niveis_niveis, :on_update=&gt;:cascade, :on_delete=&gt;:restrict}, :index=&gt;{:with=&gt;[:id], :unique=&gt;true, :name=&gt;"unique_perfil_niveis_id_nivel"}})
  rake aborted!
  An error has occurred, this and all later migrations canceled:
  
  wrong number of arguments (5 for 3)
  </code></pre>
  
  <p>Backtrace:</p>
  
  <pre><code>    wrong number of arguments (5 for 3)
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/foreigner-1.1.6/lib/foreigner/connection_adapters/sql2003.rb:17:in `add_foreign_key'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/schema_plus-1.1.2/lib/schema_plus/active_record/column_options_handler.rb:24:in `schema_plus_handle_column_options'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/schema_plus-1.1.2/lib/schema_plus/active_record/foreign_keys.rb:125:in `add_column'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:450:in `block in method_missing'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:424:in `block in say_with_time'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/benchmark.rb:280:in `measure'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:424:in `say_with_time'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:444:in `method_missing'
  /home/sinetic/www/next/cadastros/db/migrate/20150223112512_change_cadastros_perfil_niveis.rb:4:in `change'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:393:in `block (2 levels) in migrate'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/benchmark.rb:280:in `measure'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:393:in `block in migrate'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:118:in `with_connection'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:377:in `migrate'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:512:in `migrate'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:704:in `block (2 levels) in migrate'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:759:in `call'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:759:in `block in ddl_transaction'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/transactions.rb:208:in `transaction'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:759:in `ddl_transaction'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:703:in `block in migrate'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:684:in `each'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:684:in `migrate'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:554:in `up'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/migration.rb:535:in `migrate'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/gems/activerecord-3.2.2/lib/active_record/railties/databases.rake:153:in `block (2 levels) in &lt;top (required)&gt;'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:205:in `call'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:200:in `each'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:94:in `each'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
  /home/sinetic/.rvm/rubies/ruby-1.9.3-p547/lib/ruby/1.9.1/rake/application.rb:63:in `run'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547@global/gems/rake-0.9.2.2/bin/rake:32:in `&lt;top (required)&gt;'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/bin/rake:23:in `load'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/bin/rake:23:in `&lt;main&gt;'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/bin/ruby_executable_hooks:15:in `eval'
  /home/sinetic/.rvm/gems/ruby-1.9.3-p547/bin/ruby_executable_hooks:15:in `&lt;main&gt;'
  </code></pre>
  
  <p>How do this options could be added to the table in question without dropping it and creating it again?</p>