2011-06-05 79 views
4

我創建了一個屬性爲「name」的模型,但我想將其更改爲「username」。我讀過的關於數據庫遷移的一切都涉及到創建一個類或一些複雜的東西。我想要做的就是SQL中的「UPDATE TABLE」。你如何運行一次性數據庫遷移來改變它?我猜它會涉及rails console,然後是一些命令?Ruby on Rails中的一次更改模型屬性(列名)

回答

8

第一:

rails g migration rename_name_column_to_username 

然後在生成的rename_name_column_to_username.rb遷移文件:

class RenameNameColumnToUsername < ActiveRecord::Migration 
    def self.up 
    rename_column :users, :name, :username 
    end 

    def self.down 
    rename_column :users, :username, :name 
    end 
end 

然後rake db:migrate

0

運行rails g migration RenameNameToUsername,這將在db/migrate創建一個新文件。

打開該文件,並添加以下到self.up部分:

rename_column :tablename, :name, :username 

然後運行rake db:migrate

3

如果您還沒有提交最初創建的「名稱」列中的代碼,你可以進入創建該列的舊遷移文件並將name更改爲username,然後重新生成該模式。

但是,如果您提交了代碼,則應該創建一個單獨的遷移文件,將name重命名爲username

這對於跟蹤數據庫的版本控制非常重要。所以你不應該使用手動SQL(ALTER TABLE ...)來改變模式。