0

Ich habe zwei Modelle in Schienen 5,1Tabellenfehler Join auf Migration läuft

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 

Ich habe mehrere Migrationen hinzugefügt das Problem ist, wenn ich versuche, Migration ich den Fehler ERROR: relation "comfort_factor_sub_categories" does not exist weil bei der Migration erhalten ausführen Tabelle comfort_factor_sub_categories erstellen wird in späteren Migrationen ausgeführt. Wie kann ich damit umgehen? Hinweis: Ich kann den Namen von join_table nicht ändern, da es nur ein Beispiel ist. Ich habe lange Namen.

+0

Sie etwas getan haben, anders aus, was es in der Führung über vorgeschlagen wird? http://guides.rubyonrails.org/association_basics.html#creating-join-tables-for-has-and-belongs-to-many-associations könnten Sie ein Beispiel dafür geben, was Sie bei Ihren Migrationen getan haben? – mabe02

Antwort

0

Wenn ich Ihr Problem richtig verstanden habe, haben Sie mehrere Migrationen hinzugefügt, und Sie können sie nicht ausführen, weil eine Beziehung nicht gefunden wird.

In diesem Fall sollten Sie 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 

Sie sollten dann für SubCategory das gleiche tun.

Für eine richtige join_table erstellen, können Sie auf Schienen beziehen official documentation