0

J'ai deux modèles dans des rails 5,1Joignez-vous à une erreur de table sur l'exécution de la migration

class Category < ActiveRecord::Base 
    has_and_belongs_to_many :sub_categories, join_table: "categories_join_table" 
end 

class SubCategory < ActiveRecord::Base 
    has_and_belongs_to_many :categories, join_table: "categories_join_table" 
end 

J'ai ajouté plusieurs migrations, le problème est lorsque je tente de lancer la migration, je reçois l'erreur ERROR: relation "comfort_factor_sub_categories" does not exist parce que dans la migration pour créer la table comfort_factor_sub_categories se déroulera dans les migrations ultérieures. Comment puis-je gérer cela? Note: Je ne peux pas changer le nom de join_table car c'est juste un exemple de noms longs.

+0

Avez-vous fait quoi que ce soit différent de ce qu'il est suggéré dans le guide à ce sujet? http://guides.rubyonrails.org/association_basics.html#creating-join-tables-for-has-and-belongs-to-many-associations pourriez-vous partager un échantillon de ce que vous avez fait dans vos migrations? – mabe02

Répondre

0

Si j'ai bien compris votre problème, vous avez ajouté plusieurs migrations et vous ne pouvez pas les exécuter car certaines relations ne sont pas trouvées.

Dans ce cas, vous devriez duplicate the classes in migrations:

class CreateCategories < ActiveRecord::Migration[5.1] 
    class Category < ActiveRecord::Base 
    # without declaring the relationship with the table which does not exist yet 
    end 

    def up 
    create_table :categories do |t| 
     # t.something 
    end 
    end 
    def down 
    drop_table :categories 
    end 
end 

Vous devriez alors faire la même chose pour SubCategory.

Pour créer un join_table approprié, vous pouvez vous référer à Rails official documentation