Rails模型商店

时间:2017-01-25 16:48:27

标签: ruby-on-rails ruby

我的项目中有用户模型(项目已转移给我,我不完全理解为什么会出现此问题)。

当用户试图删除他自己的记录或者我是从Rails控制台`User.find(1).destroy'我看到日志:

User Store (16.0ms)  {"id":1}

但是记录不会从数据库中消失,我不明白它是什么以及它为什么会发生。

修改

我已经使用AASM gem创建了安全删除方法。并且当状态更改为已删除时(在记录中它看起来像state: 0(用于创建)和state: 1(用于删除))我无法通过控制台找到ID为1的用户。但是当我进入MySQL控制台时,我看到状态为1的记录。

1 个答案:

答案 0 :(得分:1)

这似乎是预期的行为。

大多数安全删除机制修改默认范围以排除"删除"记录。执行无范围查询将同时返回"已删除"和 - "删除"记录。

由于记录没有从数据库中物理删除任何绕过Rails范围机制的东西(如来自数据库控制台或IDE的查询)都会显示"已删除"记录以及任何标志/状态用于表示他们已经(虚拟)"删除"。

如果在实施安全删除机制之前,destroy 从数据库中删除记录,那么还有别的东西在系统中进行某种形式的安全删除。默认destroy行为将从数据库中物理删除记录。