我的项目中有用户模型(项目已转移给我,我不完全理解为什么会出现此问题)。
当用户试图删除他自己的记录或者我是从Rails控制台`User.find(1).destroy'我看到日志:
User Store (16.0ms) {"id":1}
但是记录不会从数据库中消失,我不明白它是什么以及它为什么会发生。
修改
我已经使用AASM gem创建了安全删除方法。并且当状态更改为已删除时(在记录中它看起来像state: 0
(用于创建)和state: 1
(用于删除))我无法通过控制台找到ID为1的用户。但是当我进入MySQL控制台时,我看到状态为1的记录。
答案 0 :(得分:1)
这似乎是预期的行为。
大多数安全删除机制修改默认范围以排除"删除"记录。执行无范围查询将同时返回"已删除"和 - "删除"记录。
由于记录没有从数据库中物理删除任何绕过Rails范围机制的东西(如来自数据库控制台或IDE的查询)都会显示"已删除"记录以及任何标志/状态用于表示他们已经(虚拟)"删除"。
如果在实施安全删除机制之前,destroy
不从数据库中删除记录,那么还有别的东西在系统中进行某种形式的安全删除。默认destroy
行为将从数据库中物理删除记录。