Je sais comment ajouter une colonne à une table existante. Maintenant, je dois ajouter plusieurs colonnes à une table existante. Y a-t-il un moyen plus court pour:
add_col1_col2_col3_col4_.._coln_to_tables col1:integer col2:integer etc...
Dois-je faire ce qui précède pour TOUTES les colonnes supplémentaires que je dois ajouter?
Non pas nécessaire. Tu peux faire
En supposant que TableName est utilisateur
Rails g migration AddColumnsToUser col1:integer col2:integer .. etc.
Voici une bonne ressource sur ActiveRecord: Migrations qui répertorie toutes les commandes que vous pouvez utiliser pour manipuler vos bases de données. Vous pouvez aussi faire la tâche de cette façon:
Rails g migration AddMoreColumnsToModel
Puis ouvrez le fichier de migration et mettez:
def change
add_column :table, :new_column, :type
# add as many columns as you need
end
Si vous voulez faire ce que Maxd suggère, ayant littéralement 100 colonnes du même type à créer automatiquement, son code est une bonne idée.
Il suffit de créer une migration et de générer ces colonnes, à savoir:
class ChangeTables < ActiveRecord::Migration
def change
change_table :tables do |t|
100.times do |i|
t.integer :"column_#{i}"
end
end
end
end
Ce fichier de migration peut être réalisé en boucle . Mais voulez-vous vraiment le faire? Il ne semble pas correct de créer un modèle aussi lourd pour tout contenir.
Semblable aux réponses ci-dessus mais pour la compréhension du but, l’espoir ci-dessous est correct.
Rails g migration add_first_column_and_second_column_to_model first_column:string second_column:string
commande pour créer new model
et table
avec columns
:
Rails g model ModelName col_name1:string col_name2:integer col_name3:text ...
commande pour ajouter plus columns
sous la table existante:
Rails g migration AddColumnToModelName col_name4:string col_name5:integer ...
Enfin, lancez migration
avec la commande:
rake db:migrate