ruby-on-rails – 工作原理 – “belongs_to:user,dependent :: destroy`

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 工作原理 – “belongs_to:user,dependent :: destroy`前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道如何工作has_many:posts,dependent :: destroy.如果用户或具有多个帖子的内容被销毁,则所有所属帖子也将被销毁.

但是当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

会破坏身份证号为345的老师的记录,并摧毁与该老师相关的所有相关学生.

现在问题的核心是,当我的模型看起来像这样时会发生什么?

老师模型

class Teacher < ActiveRecord::Base
  has_many :students,dependent: :destroy
end

学生模特

class Student < ActiveRecord::Base
    belongs_to :teacher,dependent: :destroy
end

如果我打电话

Student.destroy

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

以下是1上Ruby文档的引用

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相关文章