2013-11-23 45 views
0

我是rails新手,並使用Rails Generate創建了一個自定義遷移來更改我的數據庫結構。這裏是我發佈的命令:rails g遷移用戶。ActiveRecord遷移不執行

現在,它創建的文件中,我inputed:

class Users < ActiveRecord::Migration 
    def change 
    add_column :first_name 
    add_column :last_name 
    remove_column :name 
    end 
end 

當我運行耙分貝:遷移沒有任何反應。我需要做些什麼來解決這個問題?

+0

如果您完全由您自己創建了該文件,那麼我會猜測您省略了文件名開頭的時間戳。 Rails會記錄數據庫中的表(schema_migrations)中執行了哪些遷移,並使用該時間戳來標識它們。沒有那個時間戳記db:migrate就會跳過遷移。 – AndyV

回答

2

它沒有運行?根據您提供的信息很難說。也許你應該嘗試一個更獨特的名字遷移?例如:

rails g migration ConvertUsersNamesToSingleField 

我不知道是否有兩個具有相同名稱的遷移很酷。但使用Users這類簡短的通用名稱可能是此處的問題。爲了後代和清晰度,有一個詳細和描述性的遷移名稱通常不會有什麼壞處。

這個問題,雙方同意,非唯一的名稱遷移不起作用:Rails migrations with the same name


但是跑了,即使這會引發錯誤。您需要在這些列調用中包含表名,並且您需要在創建字段時指定類型。

class ConvertUsersNamesToSingleField < ActiveRecord::Migration 
    def change 
    add_column :users, :first_name, :string 
    add_column :users, :last_name, :string 
    remove_column :users, :name 
    end 
end 
+0

非常感謝!正是我需要:)現在完美工作。 – Arun