是否可以更改rails 3迁移中的列索引?

san*_*xus 44 migration indexing ruby-on-rails-3

我有一个表'用户'列'电子邮件'.它曾经是唯一的(带索引),但新的要求是允许那里的nils.

有没有比以下更好的解决方案:

  remove_index :users, :email
  add_index :users, :email
Run Code Online (Sandbox Code Playgroud)

最初它添加了唯一的选项:

add_index :users, :email, :unique => true
Run Code Online (Sandbox Code Playgroud)

Cha*_*rdy 36

我会说你有正确的解决方案,因为索引需要重新生成,因此没有update_index.


por*_*ast 12

嘿,这是我刚刚写的一个很好的迁移.我有一个表'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
Run Code Online (Sandbox Code Playgroud)