2016-02-14 1 views
0

J'ai effectué une migration change_column plusieurs fois maintenant et elle supprime la totalité de la table à laquelle j'essaie d'apporter la modification.La migration change_column supprime la table

class ChangePictureColumnInProperties < ActiveRecord::Migration 
def change 
    change_column :properties, :pictures, :json 
end 
end 

Il a ensuite complètement supprime tout l'ensemble de la table properties. J'essaie de configurer CarrierWave et la documentation dit «Ajouter une colonne pouvant stocker une matrice» et fournit un exemple en utilisant JSON, pour fournir un contexte sur ce que je fais. Je suis nouveau à Rails donc aucune idée de ce que je fais mal ici. Appréciez toutes les pensées.

Répondre

0

Si vous utilisez SQLite, vous devez supprimer la table et la créer à nouveau, SQLite ne prend pas en charge la suppression, le changement de type et le renommage des colonnes (sans supprimer l'entrée).

Dans votre migration, peut faire:

drop_table :properties 
create_table :properties 
add_column :properties, :your_previous_columns 
add_column :properties, :your_previous_columns 
add_column :properties, :pictures, :json 

Si vous avez des informations pertinentes, peuvent créer une autre table avec la bonne structure, importer vos informations et après supprimer l'ancienne table.

IMPORTANT! Je ne crois pas qu'un champ JSON serait la meilleure option, vous pouvez utiliser une relation "un à plusieurs" entre votre entrée et ses images.

Et lorsque vous avez besoin d'ajouter des images pour votre entrée, utilisez "formulaires imbriqués".

avec des formulaires imbriqués, vous pouvez envoyer les informations qui appartiennent à votre entrée et ses images imbriquées.

+1

Merci Elias. J'ai essayé ce même problème. Il a encore baissé la table. D'autres pensées? – dgreen22

+0

Utilisez-vous sqlite? –