在我的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
时,我想删除所有关联的jobs
和projects
。所以我做了类似的事情:
class Person < ActiveRecord::Base
has_many :jobs, :dependent => :destroy
has_many :projects, :through => :jobs, :dependent => :destroy
end
这可以很好地摆脱jobs
但离开projects
(我假设因为没有jobs
,person
无法参考project
)。是否有惯用的方法来执行此操作,或者我只需要在before_destroy
上使用jobs
回调来删除projects
?
感谢您的帮助。
答案 0 :(得分:2)
这只是猜测,但请尝试:
class Job < ActiveRecord::Base
belongs_to :person
belongs_to :project, :dependent => :destroy
end
我认为可能发生的事情是,当你销毁一个人时,Rails可能会删除你的工作记录,然后在下一个“行”中它试图搜索项目,但是因为没有工作,项目不会被销毁。 / p>