无法获得has_and_belongs_to_many关联来创建

时间:2012-03-07 17:14:11

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

这是我第一次创建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

我正在尝试通过服务器对象创建服务。

我已经通过server = Server.find_by_name(server_name)获得了服务器对象。如果我尝试通过service = server.services.newserver.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 个答案:

答案 0 :(得分:2)

简单错误:

您的服务类中应该是has_and_belongs_to_many :servers

答案 1 :(得分:0)

首先,我认为你有一个错字,你的意思是服务器不是服务

一定是

class Service < ActiveRecord::Base
  has_and_belongs_to_many :servers

有两种方法可以在rails中设置多对多关联,我建议使用has_many:因为has_and_belongs_to_many非常有限。

Ryan在这个主题上创建了一个很好的Railscasts非常有帮助! http://railscasts.com/episodes/47-two-many-to-many