2013-10-27 50 views
2

在我的Rails應用程序我有這些模型:如何銷燬has_many關聯和連接表記錄?

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(我假設,因爲沒有jobs,該person沒有辦法引用project)。有沒有一種慣用的方式來做到這一點,或者我只需要在我的jobs上使用before_destroy回叫來刪除projects

感謝您的任何幫助。

回答

2

這只是一個猜測,但嘗試:

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

我覺得可能會發生的是,當你摧毀一個人時,Rails可以刪除你的工作記錄,那麼在接下來的「行」吧試圖搜索項目,但由於沒有工作項目不會被銷燬。

+0

太棒了。而已。我一直在努力解決這個問題好幾個小時。非常感謝。 – Tintin81

相關問題