Создать соединительную таблицу без первичного ключа

У меня есть две таблицы с отношением "многие ко многим", которые я использую has_and_belongs_to_many для определения ассоциации.

class Foo < ActiveRecord::Base
  ...
  has_and_belongs_to_many :bar
  ...
end

class Bar < ActiveRecord::Base
  ...
  has_and_belongs_to_many :foo
  ...
end

У меня также есть класс, определенный для представления объединенной таблицы

class BarFoo < ActiveRecord::Base
  ...
  belongs_to :foo
  belongs_to :bar
  ...
end

Когда я запускаю rake db: seed я получаю следующую ошибку:

Primary key is not allowed in a has_and_belongs_to_many join table (bar_foo)

Если я редактирую базу данных и удаляю поле первичного ключа (ID) из таблицы bar_foo, а затем повторно запускаю rake db: seed, все работает по желанию.

Учитывая вышеизложенное, каков результат предпочтительные средства создания таблиц соединений в рельсах без первичного ключа?

Я также пробовал использовать has_many: bars,: through =>: foo и наоборот, но получил сообщение об ошибке вроде «undefined method 'klass' for nil : NilClass ".

12
задан Keith 22 October 2010 в 14:38
поделиться