在我的 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
当我删除一个人
时,我想删除所有关联的jobs
和projects
。所以我做了类似的事情:
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
?
感谢您的帮助。
这只是一个猜测,但请尝试:
class Job < ActiveRecord::Base
belongs_to :person
belongs_to :project, :dependent => :destroy
end
我认为可能发生的情况是,当你销毁一个人时,Rails 可能会删除你的工作记录,然后在下一个“行”中它会尝试搜索项目,但由于没有工作,项目不会被销毁。
我是一名优秀的程序员,十分优秀!