我正在尝试为电子邮件列的用户表添加索引。键入rails g migration add_index_to_users_email
会生成迁移,但该函数为空。蛇的外壳应该是正确的,所以我不知道为什么要创建迁移但内部的更改函数是空的。
我也试过AddIndexToUsersName
,同样的问题出现了。
任何有关问题的方向都将受到高度赞赏。我唯一能想到的是我使用Postgres而不是MySQL或SQLite,但那不重要吗?
答案 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