2

在我的 Rails 应用程序中,我有这些模型:

class Person < ActiveRecord::Base
  has_many :jobs
  has_many :projects, :through => :jobs
end

class Project < ActiveRecord::Base
  has_many :jobs
  has_many :people, :through => :jobs
end

class Job < ActiveRecord::Base
  belongs_to :person
  belongs_to :project
end

当我删除 aperson时,我想删除所有关联的jobsand projects。所以我做类似的事情:

class Person < ActiveRecord::Base
  has_many :jobs, :dependent => :destroy
  has_many :projects, :through => :jobs, :dependent => :destroy
end

这非常适合摆脱,jobs但留下了projects(我假设因为没有jobsperson就无法引用project)。有没有一种惯用的方法来做到这一点,还是我只需要before_destroy在我的上使用回调jobs来删除projects

谢谢你的帮助。

4

1 回答 1

2

这只是一个猜测,但请尝试:

class Job < ActiveRecord::Base
  belongs_to :person
  belongs_to :project, :dependent => :destroy
end

我认为可能发生的情况是,当您销毁一个人时,Rails 可能会删除您的工作记录,然后在下一个“行”中它会尝试搜索项目,但由于没有工作项目不会被销毁。

于 2013-10-27T17:04:47.023 回答