Tengo dos tablas con una relación de muchos a muchos que estoy usando has_and_belongs_to_ many para definir la asociación.Crear tabla de unión sin clave principal
class Foo < ActiveRecord::Base
...
has_and_belongs_to_many :bar
...
end
class Bar < ActiveRecord::Base
...
has_and_belongs_to_many :foo
...
end
También he la clase definida para representar la tabla
class BarFoo < ActiveRecord::Base
...
belongs_to :foo
belongs_to :bar
...
end
Cuando corro rake db se unen: la semilla me sale el siguiente error:
Primary key is not allowed in a has_and_belongs_to_many join table (bar_foo)
Si puedo editar la base de datos y elimine el campo de clave principal (ID) de la tabla bar_foo y luego vuelva a ejecutar rake db: todo funciona como lo desee.
Dado lo anterior, ¿cuál es el medio preferido para crear tablas de unión en rieles sin clave principal?
También intenté usar "has_many: bars,: through =>: foo" y viceversa, pero recibí un mensaje de error algo así como "método indefinido 'klass' para nil: NilClass".
Matt, gracias por la respuesta. Soy relativamente nuevo en RoR, entonces, ¿cuál es el medio preferido para crear una tabla sin los archivos de modelo correspondientes? ¿Esto se haría simplemente generando un archivo de migración y usando create_table para definir la tabla con los dos atributos bar_id y foo_id? – Keith
Aquí hay una buena respuesta sobre cómo hacerlo: [¿Debo crear manualmente una migración para una tabla de unión HABTM?] (Http://stackoverflow.com/questions/564306/do-i-need-to-manually-create -a-migration-for-a-habtm-join-table) – Matt