我有一个表'用户',列'电子邮件'。它曾经是唯一的(带有索引),但一个新的要求是在那里允许 nils。
有没有比以下更好的解决方案:
  remove_index :users, :email
  add_index :users, :email
?
最初它添加了唯一选项:
add_index :users, :email, :unique => true
我有一个表'用户',列'电子邮件'。它曾经是唯一的(带有索引),但一个新的要求是在那里允许 nils。
有没有比以下更好的解决方案:
  remove_index :users, :email
  add_index :users, :email
?
最初它添加了唯一选项:
add_index :users, :email, :unique => true
我会说您在那里有正确的解决方案,因为需要重新生成索引,因此为什么没有update_index.
嘿,这是我刚刚写的一个迁移,效果很好。我有一个表'scraped_episodes',其中有一列是varchar(255)'enclosureUrl'。我需要将其设置为更长的网址,所以这就是我使用的(Rails 3.2.13)
class ExpandEnclosureUrl < ActiveRecord::Migration
  def up
    # remove index cuz we need to
    remove_index :scraped_episodes, :enclosureUrl
    # change length to 2048 characters
    change_column :scraped_episodes, :enclosureUrl, :text, :limit=>2048
    # redo this index to only index the first 255 chars
    add_index :scraped_episodes, :enclosureUrl, :length => 255
  end
  def down
    # remove index cuz we need to
    remove_index :scraped_episodes, :enclosureUrl
    # use the same settings at when i first created this field
    change_column :scraped_episodes, :enclosureUrl, :string, :limit=>nil
    # use the same settings as when i first added this index
    add_index :scraped_episodes, :enclosureUrl
  end
end