如何破坏has_many关联和连接表记录?

时间:2013-10-27 17:01:18

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

在我的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

当我删除person时,我想删除所有关联的jobsprojects。所以我做了类似的事情:

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这只是猜测,但请尝试:

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

我认为可能发生的事情是,当你销毁一个人时,Rails可能会删除你的工作记录,然后在下一个“行”中它试图搜索项目,但是因为没有工作,项目不会被销毁。 / p>