2017-10-17 1 views
0

Ich versuche, eine Spalte in meiner Ereignistabelle umbenennen, wie folgt:Überprüfen Sie, ob Spalte vor der Umbenennung existiert es

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

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

Dies funktioniert, aber was ich möchte zuerst tun, um die Migration stellen Sie sicher, scheitert nicht in der Zukunft, ist zu prüfen, ob die Spalte schedule_id schon da ist, bevor ich versuche, sie umzubenennen. Wie kann ich das durch eine Migration tun?

+0

meine Lösung überprüfen – krishnar

Antwort

1

können Sie verwenden, wenn sonst Zustand innen nach oben und unten methods.Like unter

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

Active diese Informationen direkt aus der DB oder den App ziehen? Wie ich den Namen des Attributs im Gerüst geändert habe, im Vorgriff auf die Migration – EastsideDeveloper

+0

@EastsideDeveloper holt es Spaltenname direkt von DB.No Issues.it funktioniert tadellos. Getesteter Code – krishnar

+0

Getestet und überprüft, danke – EastsideDeveloper

Verwandte Themen