我想添加索引到我的用戶表的電子郵件列。鍵入rails g migration add_index_to_users_email
會生成遷移,但該函數爲空。蛇殼應該是正確的,所以我不知道爲什麼遷移正在創建,但裏面的變化功能是空的。Rails遷移Add_Index問題
我也試過AddIndexToUsersName
並出現同樣的問題。
關於這個問題的任何方向將不勝感激。唯一我能想到的是,我使用的是Postgres而不是MySQL或SQLite,但這並不重要嗎?
我想添加索引到我的用戶表的電子郵件列。鍵入rails g migration add_index_to_users_email
會生成遷移,但該函數爲空。蛇殼應該是正確的,所以我不知道爲什麼遷移正在創建,但裏面的變化功能是空的。Rails遷移Add_Index問題
我也試過AddIndexToUsersName
並出現同樣的問題。
關於這個問題的任何方向將不勝感激。唯一我能想到的是,我使用的是Postgres而不是MySQL或SQLite,但這並不重要嗎?
據我所知,遷移生成器只支持添加和刪除列,並帶有指定的修飾符。例如,如果你希望一個新字符串列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
看一看:
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
線,然後運行遷移。
啊,這是有道理的。我也看到我在假設我的原始軌道遷移將工作時出錯。我誤解了Hartl對做什麼的解釋。謝謝。 – BronzeTax
沒問題,很高興幫助!快速問題,Hartl是誰? –
[Hartl](https://www.railstutorial.org/),我真的在挖這本書。深入詳盡地解釋一切。 – BronzeTax