Rails迁移Add_Index问题

时间:2015-05-07 23:28:16

标签: ruby-on-rails postgresql

我正在尝试为电子邮件列的用户表添加索引。键入rails g migration add_index_to_users_email会生成迁移,但该函数为空。蛇的外壳应该是正确的,所以我不知道为什么要创建迁移但内部的更改函数是空的。

我也试过AddIndexToUsersName,同样的问题出现了。

任何有关问题的方向都将受到高度赞赏。我唯一能想到的是我使用Postgres而不是MySQL或SQLite,但那不重要吗?

2 个答案:

答案 0 :(得分:1)

看看:

http://guides.rubyonrails.org/active_record_migrations.html

正确的命令是

rails g migration AddIndexToUsers email:string:index

这将产生:

class AddIndexToUsers < ActiveRecord::Migration
  def change
    add_column :users, :email, :string
    add_index :users, :email
  end
end

编辑迁移文件并删除add_column行,然后运行迁移。

答案 1 :(得分:1)

据我所知,迁移生成器仅支持使用指定修饰符添加和删除列。例如,如果您希望将 new 字符串列phone添加到users表,则可以使用命令

rails generate migration AddPhoneToUsers phone:string

检查Rails Guides列修改器。您可以尝试

rails generate migration AddIndexToUsers email:index

向现有列添加索引。但是,我不确定生成器是否支持列修改。假设email表上已存在users列,您可以自己编写迁移:

class AddIndexToUsers < ActiveRecord::Migration
  def change
    add_index :users, :email
  end
end