依赖性破坏超出范围

时间:2012-06-20 16:54:48

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

好的,我有两个has_many :through关系模型:

class Server < ActiveRecord::Base
  has_many :services, :through :servers_services, :dependent => :destroy
  has_many :servers_services, :dependent => :destroy

  def destroy!
    options = {:name => self.name, :services => self.services.map { |s| s.attributes }}
    Resque.enqueue(Cluster::DestroyServer, options)
    self.destroy 
  end
end

class Service
  has_many :servers, :through => :servers_services
  has_many :servers_services
end

通过以下方式连接:

class ServersService < ActiveRecord::Base
  belongs_to :server
  belongs_to :service
end

服务器模型中的destroy!方法以前工作过,但现在没有做到应有的方法。它应找到与Services关联的所有Server,触发Resque任务(有效),然后销毁Server及其关联的Services

然而,正在发生的是它会破坏所有ServerServices(字面意思是整个表),而不仅仅是与Server对象关联的那个,这会打破所有关联。有什么明显的东西我在这里不见了吗?

1 个答案:

答案 0 :(得分:0)

这是由servers_services表上ID列上的postgresql序列损坏引起的。修复了序列,以便有一个有效的主键,一切都按预期工作。