9
votes

Quelle est la migration DOWN pour ajouter une référence polymorphe

J'ai la migration suivante mais je ne sais pas quoi utiliser dans la méthode xxx


0 commentaires

5 Réponses :


-2
votes

Qu'est-ce qui ne va pas avec cela? XXX


3 commentaires

C'est ce que je pensais que ce serait mais c'est la première fois que j'ai utilisé des modèles polymorphes et que je me suis confus


en fait, il ne devrait pas être supprimé_column: adresses,: adresse adressable


Oups, tu es totalement correct. J'aurais dû vérifier les documents d'abord, au lieu de passer à la mémoire.



2
votes

Quel est le problème?

def self.down
  remove_column :addresses, :addressable_type
  remove_column :addresses, :addressable_id
end


2 commentaires

dis-tu supprimer_column: adresses,: adresse adressable n'est pas correcte?


Damian: Non, il suffit de regarder la table via certains navigateurs SQL et vous verrez les deux colonnes.



16
votes

En réalité,

   change_table :addresses do |t|
     t.remove_references :addressable, :polymorphic => true
   end


2 commentaires

Cela provoquera la gauche de la colonne Adressable_Type. il devrait être t.remove_referferences: adresse,: polymorphe => vrai


Je voudrais uppoter cette réponse si elle incluait @ebengener son commentaire



7
votes
def self.down
  change_table :addresses do |t|
    t.remove_references :addressable, :polymorphic => true
  end
end

0 commentaires

9
votes
class RemoveAddressableFromAddresses < ActiveRecord::Migration
  def change
    remove_reference :addresses, :addressable, polymorphic: true, index: true
  end
end

2 commentaires

Veuillez prendre une minute pour expliquer ce que votre code fait et comment il répond à cette question.


Cela devrait maintenant être la bonne réponse: Retirer_reference peut aujourd'hui (puisque les rails 4.2 au moins) sont renvoyés. Cela signifie que les rails sillonnent comment faire rouler une refoulée par une valeur ajoutée. Donc, ce code peut être renvoyé (bien que les données puissent être perdues dans la migration)