Ich kann einer vorhandenen Tabelle eine Spalte hinzufügen. Jetzt muss ich einer vorhandenen Tabelle viele Spalten hinzufügen. Gibt es einen kürzeren Weg für:
add_col1_col2_col3_col4_.._coln_to_tables col1:integer col2:integer etc...
Muss ich das ALLE für ALLE zusätzlichen Spalten tun, die ich hinzufügen muss?
Nicht notwendig Du kannst tun
Angenommen, TableName ist Benutzer
Rails g migration AddColumnsToUser col1:integer col2:integer .. etc.
Hier finden Sie eine gute Ressource zu ActiveRecord: Migrations , in der alle Befehle aufgeführt sind, die Sie zur Bearbeitung Ihrer Datenbanken verwenden können. Sie können die Aufgabe auch so ausführen:
Rails g migration AddMoreColumnsToModel
Dann öffnen Sie die Migrationsdatei und setzen Folgendes:
def change
add_column :table, :new_column, :type
# add as many columns as you need
end
Wenn Sie das tun möchten, was Maxd vorschlägt, da 100 Spalten desselben Typs automatisch erstellt werden, ist sein Code eine gute Idee.
Erstellen Sie einfach eine Migration und generieren Sie diese Spalten.
class ChangeTables < ActiveRecord::Migration
def change
change_table :tables do |t|
100.times do |i|
t.integer :"column_#{i}"
end
end
end
end
Diese Migrationsdatei kann in einer Schleife erstellt werden Möchten Sie das wirklich tun? Es sieht nicht richtig aus, ein so schweres Modell für alles zu erstellen.
Ähnlich den obigen Antworten, aber zum besseren Verständnis ist die Hoffnung unterhalb der Namenskonvention gut.
Rails g migration add_first_column_and_second_column_to_model first_column:string second_column:string
befehl zum Erstellen von new model
und table
mit columns
:
Rails g model ModelName col_name1:string col_name2:integer col_name3:text ...
befehl, um weitere columns
unter der vorhandenen Tabelle hinzuzufügen:
Rails g migration AddColumnToModelName col_name4:string col_name5:integer ...
Zum Schluss führen Sie migration
mit dem Befehl aus:
rake db:migrate