Не удалось получить ассоциацию has_and_belongs_to_many для создания - PullRequest
0 голосов
/ 07 марта 2012

Это мой первый раз, когда я создаю ассоциацию has_and_belongs_to_many, и она меньше кооперативной.

Мои модели

class Server < ActiveRecord::Base
  has_and_belongs_to_many :services

и

class Service < ActiveRecord::Base
  has_and_belongs_to_many :services

I 'Я пытаюсь создать службу через объект сервера.

Я получил объект сервера по server = Server.find_by_name(server_name), который работает просто отлично.Если я пытаюсь создать объект службы, либо service = server.services.new, либо server.services.create(params), я получаю следующую ошибку ActiveRecord:

ActiveRecord::HasAndBelongsToManyAssociationForeignKeyNeeded: Cannot create self referential has_and_belongs_to_many association on 'Service#services'. :association_foreign_key cannot be the same as the :foreign_key.

Хотя я не нашел много информации об этой ошибке.Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

Простая ошибка:

Должно быть has_and_belongs_to_many :servers в вашем классе обслуживания.

0 голосов
/ 07 марта 2012

Во-первых, я думаю, что у вас есть опечатка, вы имели в виду серверы, а не сервисы

это должно быть

class Service < ActiveRecord::Base
  has_and_belongs_to_many :servers

Есть два способа настроить множество связей для рельсов,я бы предложил использовать has_many: through, поскольку has_and_belongs_to_many очень ограничен.

Райан создал отличные Railscasts по этой теме, что очень полезно!http://railscasts.com/episodes/47-two-many-to-many

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...