我知道怎么做has_many :posts, dependent: :destroy
。如果User
或has_many
发布的内容被销毁,则所有属于User
的帖子也会被销毁。
但是当Post
模型belongs_to :user, dependent: :destroy
时会发生什么?我在Rails指南中找到了这个选项,但我不知道如何使用它。
http://guides.rubyonrails.org/association_basics.html
我知道怎么做has_many :posts, dependent: :destroy
。如果User
或has_many
发布的内容被销毁,则所有属于User
的帖子也会被销毁。
但是当Post
模型belongs_to :user, dependent: :destroy
时会发生什么?我在Rails指南中找到了这个选项,但我不知道如何使用它。
http://guides.rubyonrails.org/association_basics.html
3条答案
按热度按时间mqxuamgl1#
一个老师“有很多”学生。每个学生只有一个老师,但每个老师有很多学生。这意味着学生上有一个外键或teacher_id,它引用了他们所属的教师。
学生“属于”老师。每个老师都有很多学生,但每个学生只有一个老师。同样,学生上的外键引用了他们所属的老师。
让我们用这个学生/老师的概念来解决这个问题。
教师模型
学生模型
假设这些模型
将删除示例化的教师以及与该教师关联的所有学生。
比如说,
将销毁ID为345的教师的记录,并销毁与该教师关联的所有学生。
现在回到问题的核心,当我的模型看起来像这样时会发生什么?
教师模型
学生模型
如果我打电话给你
这将销毁示例化的学生和该学生的关联教师。然而,据我所知(根据文件),这不会破坏任何其他学生有关的老师,让他们'孤儿'。
这里引用了Ruby文档中的一段话1
如果设置为:destroy,则当此对象被。当belongs_to与另一个类上的has_many关系一起使用时,不应指定此选项,因为可能会留下孤立记录。
zynd9foi2#
它示例化所有用户的示例,然后向每个用户发送destroy消息。导致以这种方式销毁的用户的正常销毁生命周期。
at0kjp5o3#
我试过set dependent::destroy into belongs_to.示例
在控制台中,如果comment已经被destroy,post也会被destroy,但是我认为你不应该设置belongs_to + dependent::一起毁灭
事实上,例如在Facebook上,当1个帖子的1条评论被删除时,这个帖子不会被删除