Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我应该在删除操作中使用哪个:user.delete或user.destroy?_Ruby On Rails_Activerecord_Model - Fatal编程技术网

Ruby on rails 我应该在删除操作中使用哪个:user.delete或user.destroy?

Ruby on rails 我应该在删除操作中使用哪个:user.delete或user.destroy?,ruby-on-rails,activerecord,model,Ruby On Rails,Activerecord,Model,我发现ActiveRecord既有删除也有销毁,这让人感到困惑 在控制器中,我想在删除操作中删除用户 结果是,由用户模型表示的这个实例在数据库中不再存在 我应该使用哪种方法呢?delete绕过回调,速度更快,但由于同样的原因,它的功能更少destroy是一种更安全的方法,除非您明确知道回调在特定情况下是不必要的。当您说“回调”时,您是指Rails请求数据库删除记录后数据库调用的其他方法吗?你怎么知道这些回调的作用以及你是否需要它们?回调是在销毁之前和销毁之后(它们是Ruby方法,你说的“数据库调

我发现ActiveRecord既有删除也有销毁,这让人感到困惑

在控制器中,我想在删除操作中删除用户

结果是,由用户模型表示的这个实例在数据库中不再存在


我应该使用哪种方法呢?

delete
绕过回调,速度更快,但由于同样的原因,它的功能更少<因此,code>destroy是一种更安全的方法,除非您明确知道回调在特定情况下是不必要的。

当您说“回调”时,您是指Rails请求数据库删除记录后数据库调用的其他方法吗?你怎么知道这些回调的作用以及你是否需要它们?回调是在销毁之前和销毁之后(它们是Ruby方法,你说的“数据库调用”是什么意思?)。我不确定你说的“回调”是什么意思-你指的是Rails调用的方法还是Oracle/MySql/等调用的方法。但我想我现在明白了,销毁前和销毁后都是Rails回调,也许我可以定义我是想在删除对象之前还是之后执行一些逻辑,比如写入日志文件?是的,您可以根据需要定义这两个回调—关键是,
delete
绕过了这两个回调,它本质上映射到一个SQL delete(如果您的DB模式中有触发器,该delete将触发该触发器,那么当删除发生时,这些触发器仍将触发)。好的,因此,我可以将delete视为SQL delete,而destroy则在打扫房间之前和之后执行一些额外的任务。谢谢