gpt4 book ai didi

ruby-on-rails - 它是如何工作的 - `belongs_to :user, dependent: :destroy`

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:31 30 4
gpt4 key购买 nike

我知道如何工作 has_many :posts, dependent: :destroy。如果 Userhas_many posts 被销毁,则所有所属的 posts 也会被销毁。

但是当 Post 模型 belongs_to :user, dependent: :destroy 时会发生什么?我在 Rails 指南中找到了该选项,但找不到如何使用它。

http://guides.rubyonrails.org/association_basics.html

最佳答案

"has_many" 

一位老师“有_很多”学生。每个学生只有一个老师,但每个老师都有很多学生。这意味着学生上有一个外键或 teacher_id,指向他们所属的老师。

"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

这会销毁实例化的学生和该学生的相关教师。然而,据我所知(根据文档),这不会破坏与该老师有关的任何其他学生,使他们成为“孤儿”。

这里引用了 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.

关于ruby-on-rails - 它是如何工作的 - `belongs_to :user, dependent: :destroy`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34624754/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com