当前迁移:
t.string "email", :default => "", :null => false
add_index :users, :email, :unique => true
我希望创建一个新的迁移,以删除:null => false
的要求,并删除email
的default => ""
。同时,我想更改索引以删除:unique => true
。语法是什么?
当前迁移:
t.string "email", :default => "", :null => false
add_index :users, :email, :unique => true
我希望创建一个新的迁移,以删除:null => false
的要求,并删除email
的default => ""
。同时,我想更改索引以删除:unique => true
。语法是什么?
我对索引并没有做过多的工作,在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
而不是省略应该可以处理它。
:column => :column_name
语法。 - Adam Eberlinremove_index :users, :column => :email
应该改为 remove_index :users, :email
。 - Johnny Klassyremove_index(table_name, :column => column_name)
:删除指定列column_name的索引。这个描述有误吗?再次声明,我以前从未使用过add/remove_index。 - Adam Eberlinchange_column :users, :email, :string, default: "", null: true
- mindtonic