Ho due tabelle con una relazione molti a molti che sto usando has_and_belongs_to_many per definire l'associazione.Crea tabella join senza chiave primaria
class Foo < ActiveRecord::Base
...
has_and_belongs_to_many :bar
...
end
class Bar < ActiveRecord::Base
...
has_and_belongs_to_many :foo
...
end
ho anche la classe definita per rappresentare il tavolo
class BarFoo < ActiveRecord::Base
...
belongs_to :foo
belongs_to :bar
...
end
Quando eseguo rake db registrazione: seme ottengo il seguente errore:
Primary key is not allowed in a has_and_belongs_to_many join table (bar_foo)
Se modifico il database e rimuovi il campo chiave primario (ID) dalla tabella bar_foo e poi rerun rake db: seed tutto funziona come desiderato.
Considerato quanto sopra, qual è il mezzo preferito per creare tabelle di join in rotaie senza chiave primaria?
Ho anche provato a utilizzare "has_many: bars,: through =>: foo" e viceversa, ma ho ricevuto un messaggio di errore come "metodo non definito 'klass' per nil: NilClass".
Matt, grazie per la risposta. Sono relativamente nuovo a RoR quindi qual è il mezzo preferito per creare una tabella senza file modello corrispondenti? Questo dovrebbe essere fatto generando un file di migrazione e usando create_table per definire la tabella con i due attributi bar_id e foo_id? – Keith
Ecco una bella risposta su come farlo: [Devo creare manualmente una migrazione per una tabella di join HABTM?] (Http://stackoverflow.com/questions/564306/do-i-need-to-manually-create -a-migrazione-per-a-HABTM-join-table) – Matt