Ich habe zwei Tabellen mit einer vielen zu vielen Beziehung, die ich has_and_belongs_to_many verwendet, um die Zuordnung zu definieren.Erstellen Join-Tabelle ohne Primärschlüssel
class Foo < ActiveRecord::Base
...
has_and_belongs_to_many :bar
...
end
class Bar < ActiveRecord::Base
...
has_and_belongs_to_many :foo
...
end
Ich habe auch die Klassentabelle darstellen definiert die Verbindung
class BarFoo < ActiveRecord::Base
...
belongs_to :foo
belongs_to :bar
...
end
Wenn ich rake db laufen: Samen ich die folgende Fehlermeldung erhalten:
Primary key is not allowed in a has_and_belongs_to_many join table (bar_foo)
Wenn ich die Datenbank bearbeiten und entfernen Sie das Primärschlüsselfeld (ID) aus der Tabelle bar_foo und führen Sie dann Rake db erneut aus: seed alles funktioniert wie gewünscht.
Angesichts der oben genannten, was ist das bevorzugte Mittel zum Erstellen von Join-Tabellen in Schienen ohne Primärschlüssel?
Ich habe auch versucht mit "has_many: bars,: through =>: foo" und umgekehrt, aber eine Fehlermeldung wie "undefined Methode 'klass' für nil: NilClass".
Matt, danke für die Antwort. Ich bin relativ neu in RoR, also was ist das bevorzugte Mittel zum Erstellen einer Tabelle ohne entsprechende Modelldateien? Wäre dies nur möglich, indem Sie eine Migrationsdatei erstellen und create_table verwenden, um die Tabelle mit den beiden Attributen bar_id und foo_id zu definieren? – Keith
Hier ist eine nette Antwort, wie es geht: [Muss ich manuell eine Migration für eine HABTM Join-Tabelle erstellen?] (Http://stackoverflow.com/questions/564306/do-i-need-to-manually-create) -a-migration-fuer-eine-haupt-join-tabelle – Matt