2016-07-13 6 views
0

Ich importierte Daten in Rails mit einer .SQL-Datei, um festzustellen, dass die meisten Spaltentitel einen Punkt "." in ihnen. Dies ist eindeutig ein Problem, und nach dem Versuch, eine Migration auszuführen, die die Spaltennamen ändert, wird der Zeitraum immer noch verworfen. Irgendwelche Workarounds zu sprechen?Ändern der Spaltentitel mit einem "." Zeitraum

class FixColumnNames < ActiveRecord::Migration 
    def change 
      change_table :my_table do |t| 
       t.rename :p1.address, :'p1_address' 
      end 
    end 
end 
+1

Um zu verstehen, warum die oben nicht funktioniert, die Tatsache, dass der Ausdruck betrachten ': p1.to_s' gibt den String' "p1" 'zurück. Der Ausdruck ': p1.address' wird einen NoMethodError auslösen (was übrigens in Ihrer Frage enthalten sein sollte), weil': p1' ein Symbol ist und Symbole nicht auf eine Methode mit dem Namen 'address' antworten. Wie Simone unten zeigt, muss ein Symbol mit Sonderzeichen (oder Leerzeichen) in Anführungszeichen eingeschlossen sein, d. H. ':" P1.address "' oder ': 'p1.address''. –

Antwort

3

Sie können auch einen String verwenden:

t.rename "p1.address", "p1_address" 

Die folgende Syntax gilt auch:

t.rename :"p1.address", :"p1_address" 
Verwandte Themen