之间有什么区别
@model.destroy 和 @model.delete
例如:
Model.find_by(col: "foo").destroy_all //and Model.find_by(col: "foo").delete_all
如果我使用一个或另一个真的有关系吗?
基本上destroy在模型上运行任何回调,而delete实际上不运行。
从Rails API中:
ActiveRecord::Persistence.delete
删除数据库中的记录并冻结该实例以反映不应进行任何更改(因为它们不能持久保存)。返回冻结的实例。
只需在记录的主键上使用SQL DELETE语句删除该行,就不会执行任何回调。
要强制执行对象的before_destroy和after_destroy回调或任何:dependent关联选项,请使用#destroy。
before_destroy和after_destroy
dependent
#destroy
ActiveRecord::Persistence.destroy
删除数据库中的记录并冻结该实例以反映不应进行任何更改(因为它们不能持久保存)。
有一系列与destroy相关的回调。如果before_destroy回调返回false,则取消操作,destroy返回false。有关更多详细信息,请参见ActiveRecord :: Callbacks。