假设User
有很多Receipt
,我希望在删除父Receipt
实例时销毁User
的所有实例。
写作之间有什么区别:
(1)在User
模型中,has_many :receipts, dependent: :destroy
(2)在Receipt
模型中,belongs_to :user, dependent: :destroy
有什么建议吗?
答案 0 :(得分:6)
(1)在用户模型中,has_many:收据,依赖:: destroy
如果用户被销毁,其关联的收据也将被销毁。
(2)在收据模型中,belongs_to:user,dependent :: destroy
如果销毁的收据超过其父用户将被销毁,则其他关联的收据不会被销毁,但会被孤立。根据{{3}}
当使用belongs_to时,不应指定此dependent:选项 与另一个类的has_many关系相结合因为 留下孤儿记录的可能性。
答案 1 :(得分:1)
(1)在用户模型中,has_many:收据,依赖:: destroy
此处,如果用户销毁,则所有相关收据将被销毁
(2)在收据模型中,belongs_to:user,dependent :: destroy
如果Receipt被破坏,那么归属用户将被销毁
您可以使用以下三种形式指定:dependent选项: