Rails 3迁移

Joh*_*ssy 4 ruby-on-rails ruby-on-rails-3

目前的迁移:

t.string   "email", :default => "", :null => false
add_index :users, :email, :unique => true
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的迁移来删除:null => false要求,并删除default => ""for email.另外,我想更改要删除的索引:unique => true.语法是什么?

Ada*_*lin 6

我没有做很多索引,并且似乎没有一个change_index方法ActiveRecord::Migration,但你可以尝试这样的事情:

class ChangeUserStuff < ActiveRecord::Migration
  def self.up
    change_column :users, :email, :default => "", :null => true
    remove_index :users, :column => :email
    add_index :users, :email
  end

  def self.down
    change_column :users, :email, :default => "", :null => false
    remove_index :users, :column => :email
    add_index :users, :email, :unique => true
  end
end
Run Code Online (Sandbox Code Playgroud)

关于更改:null选项有一些有趣的行为,但我认为设置它们true而不是省略应该处理它.

  • "可用转换"部分[此处](http://api.rubyonrails.org/classes/ActiveRecord/Migration.html)具有删除索引的完整语法. (2认同)