Rails 3迁移

时间:2011-09-28 18:17:17

标签: ruby-on-rails ruby-on-rails-3

目前的迁移:

t.string   "email", :default => "", :null => false
add_index :users, :email, :unique => true

我想创建新迁移以删除:null => false要求,同时删除default => "" email。另外,我想更改索引以删除:unique => true。语法是什么?

1 个答案:

答案 0 :(得分:6)

我对索引做的不多,而且ActiveRecord::Migration上似乎没有change_index方法,但你可以尝试这样的事情:

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

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