回答

收藏

Destroy and Delete之间的区别

技术问答 技术问答 378 人阅读 | 0 人回复 | 2023-09-14

两者有什么区别?  l" o3 ~6 B' E, E+ k, l
@model.destroy 和 @model.delete例如:
5 X6 h( M4 G$ l/ _2 qModel.find_by(col: "foo").destroy_all//andModel.find_by(col: "foo").delete_all用一个或者另一个真的有关系吗?% ^! P$ C: P+ x" i1 }9 N
                                                               
0 \+ L" a% B+ X# U2 Z0 V% B! z    解决方案:                                                                ! z/ n) d' O8 X2 i# X8 v
                                                                基本上destroy在模型上运行任何回调delete其实不运行。
  L9 F* j; I) V  M从Rails API中:
& k9 [6 ~; O: g+ S. j+ AActiveRecord:ersistence.delete删除数据库中的记录并冻结实例,以反映不应进行任何更改(因为它们不能长期保存)。返回冻结实例。
. L6 ?1 r+ l5 L6 r" C0 o# L8 k只需在记录的主键上使用SQL DELETE如果句子被删除,则不会执行任何回调。
7 D1 g4 J5 |! I, C7 j强制执行对象before_destroy和after_destroy回调或任何:dependent请使用相关选项#destroy。
# }4 g; x8 I: w' B4 z/ W8 [" @+ CActiveRecord:ersistence.destroy删除数据库中的记录并冻结实例,以反映不应进行任何更改(因为它们不能长期保存)。
; C) @1 e8 E+ }% G6 }0 l有一系列与destroy相关回调before_destroy回调返回false,取消操作,destroy返回false。详情请参见ActiveRecord :: Callbacks。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则