这是我第一次创建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.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.
虽然我没有找到关于该错误的信息方式。我做错了什么?
答案 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