2017-10-17 59 views
0

我想重新命名在我的事件表列如下:檢查前柱的存在是爲了將其改名

class RenameScheduleToScheduleIdInEventsTable < ActiveRecord::Migration 
    def up 
    rename_column :events, :schedule, :schedule_id 
    end 

    def down 
    rename_column :events, :schedule_id, :schedule 
    end 
end 

這工作,但我想第一個做,以確保遷移在將來不會失敗,在我嘗試重命名它之前,檢查列schedule_id是否已經存在。我如何通過遷移來完成這項工作?

+0

else條件檢查我的解決方案 – krishnar

回答

1

您可以使用,如果內部上下methods.Like下面

class RenameScheduleToScheduleIdInEventsTable < ActiveRecord::Migration 
    def up 
    if Event.attribute_names.include? "schedule" 
     rename_column :events, :schedule, :schedule_id 
    end 
    end 

    def down 
    if Event.attribute_names.include? "schedule_id" 
     rename_column :events, :schedule_id, :schedule 
    end 
    end 
end 
+0

是否ActiveRecord的拉動這一信息直接從數據庫或應用程序的?由於我已經在腳手架中更改了屬性的名稱,因此預計將遷移 – EastsideDeveloper

+0

@EastsideDeveloper,它直接從DB獲取列名。沒有問題。它完美地工作。測試代碼 – krishnar

+0

經過測試和驗證,謝謝 – EastsideDeveloper