2015-05-07 132 views
0

我想添加索引到我的用戶表的電子郵件列。鍵入rails g migration add_index_to_users_email會生成遷移,但該函數爲空。蛇殼應該是正確的,所以我不知道爲什麼遷移正在創建,但裏面的變化功能是空的。Rails遷移Add_Index問題

我也試過AddIndexToUsersName並出現同樣的問題。

關於這個問題的任何方向將不勝感激。唯一我能想到的是,我使用的是Postgres而不是MySQL或SQLite,但這並不重要嗎?

回答

1

據我所知,遷移生成器只支持添加和刪除列,並帶有指定的修飾符。例如,如果你希望一個字符串列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 
+0

啊,這是有道理的。我也看到我在假設我的原始軌道遷移將工作時出錯。我誤解了Hartl對做什麼的解釋。謝謝。 – BronzeTax

+0

沒問題,很高興幫助!快速問題,Hartl是誰? –

+0

[Hartl](https://www.railstutorial.org/),我真的在挖這本書。深入詳盡地解釋一切。 – BronzeTax

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線,然後運行遷移。