它是如何工作的 - `belongs_to :user, dependent: :destroy`
How it works - `belongs_to :user, dependent: :destroy`
我知道如何工作has_many :posts, dependent: :destroy
。如果 User
或 has_many
发布的东西被销毁,所有所属的帖子也会被销毁。
但是当 Post
模型 belongs_to :user, dependent: :destroy
时会发生什么?
我在 Rails 指南中找到了该选项,但我找不到如何使用它。
它实例化所有用户的实例,然后向每个用户发送销毁消息。以这种方式销毁的用户会进入正常的销毁生命周期。
"has_many"
一个老师"has_many"个学生。每个学生只有一个老师,但每个老师都有很多学生。这意味着学生上有一个外键或 teacher_id,指向他们所属的老师。
"belongs_to"
一个学生"belongs_to"一个老师。每个老师有很多学生,但每个学生只有一个老师。同样,学生的外键指向他们所属的老师。
让我们用这个学生/老师的概念来解决这个问题。
教师模型
class Teacher < ActiveRecord::Base
has_many :students, dependent: :destroy
end
学生模型
class Student < ActiveRecord::Base
belongs_to :teacher
end
然后假设这些模型
Teacher.destroy
将删除实例化的教师以及与该教师关联的所有学生。
例如
Teacher.find(345).destroy
会销毁ID为345的老师的记录,并销毁与该老师关联的所有学生。
现在进入问题的核心,当我的模型看起来像这样时会发生什么?
教师模型
class Teacher < ActiveRecord::Base
has_many :students, dependent: :destroy
end
学生模型
class Student < ActiveRecord::Base
belongs_to :teacher, dependent: :destroy
end
如果我打电话给
Student.destroy
这会破坏实例化的学生和该学生的相关教师。然而,据我所知(根据文档),这不会破坏与该老师有关的任何其他学生,而让他们 'orphaned'。
这里引用 Ruby 文档中关于此的内容 1
If set to :destroy, the associated object is destroyed when this object is. This option should not be specified when belongs_to is used in conjunction with a has_many relationship on another class because of the potential to leave orphaned records behind.
我已经尝试设置依赖::destroy 进入 belongs_to。示例
class Post < ActiveRecord::Base
has_many :comments, dependent: :destroy
end
class Comment < ActiveRecord::Base
belongs_to :post, dependent: :destroy
end
在控制台中,如果评论已被销毁,post将被销毁
但我认为你不应该设置 belongs_to + dependent: :destroy together
其实facebook上的例子,当1个post的1条评论被删除后,这个post不会被删除
我知道如何工作has_many :posts, dependent: :destroy
。如果 User
或 has_many
发布的东西被销毁,所有所属的帖子也会被销毁。
但是当 Post
模型 belongs_to :user, dependent: :destroy
时会发生什么?
我在 Rails 指南中找到了该选项,但我找不到如何使用它。
它实例化所有用户的实例,然后向每个用户发送销毁消息。以这种方式销毁的用户会进入正常的销毁生命周期。
"has_many"
一个老师"has_many"个学生。每个学生只有一个老师,但每个老师都有很多学生。这意味着学生上有一个外键或 teacher_id,指向他们所属的老师。
"belongs_to"
一个学生"belongs_to"一个老师。每个老师有很多学生,但每个学生只有一个老师。同样,学生的外键指向他们所属的老师。
让我们用这个学生/老师的概念来解决这个问题。
教师模型
class Teacher < ActiveRecord::Base
has_many :students, dependent: :destroy
end
学生模型
class Student < ActiveRecord::Base
belongs_to :teacher
end
然后假设这些模型
Teacher.destroy
将删除实例化的教师以及与该教师关联的所有学生。
例如
Teacher.find(345).destroy
会销毁ID为345的老师的记录,并销毁与该老师关联的所有学生。
现在进入问题的核心,当我的模型看起来像这样时会发生什么?
教师模型
class Teacher < ActiveRecord::Base
has_many :students, dependent: :destroy
end
学生模型
class Student < ActiveRecord::Base
belongs_to :teacher, dependent: :destroy
end
如果我打电话给
Student.destroy
这会破坏实例化的学生和该学生的相关教师。然而,据我所知(根据文档),这不会破坏与该老师有关的任何其他学生,而让他们 'orphaned'。
这里引用 Ruby 文档中关于此的内容 1
If set to :destroy, the associated object is destroyed when this object is. This option should not be specified when belongs_to is used in conjunction with a has_many relationship on another class because of the potential to leave orphaned records behind.
我已经尝试设置依赖::destroy 进入 belongs_to。示例
class Post < ActiveRecord::Base
has_many :comments, dependent: :destroy
end
class Comment < ActiveRecord::Base
belongs_to :post, dependent: :destroy
end
在控制台中,如果评论已被销毁,post将被销毁 但我认为你不应该设置 belongs_to + dependent: :destroy together
其实facebook上的例子,当1个post的1条评论被删除后,这个post不会被删除