【发布时间】:2010-09-17 01:18:25
【问题描述】:
我认为在销毁记录时使用“撤消”方法 ala gmail 而不是显示“您确定吗? ”。
我实现这一点的方式是在模型中有一个“deleted_at”时间戳列,当调用 destroy 方法时,该列会得到时间戳
def destroy
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, Time.now)
...
end
要还原/撤消,我只需将同一列设置为零
def revert
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, nil)
...
end
当我调用 find 方法时,我只需要添加一个条件来过滤掉“已删除”的 foo。也许设置一个 cron 或后台任务在一段时间后真正销毁“已删除”的 foo。
对我有用且易于实现,但我很好奇是否有更好的方法来实现此功能?也许有一个我不知道的插件或 gem 提供了这个?
【问题讨论】:
-
你真的在乎它什么时候被删除吗?一个标志还不够吗?
-
是的,我现在不在乎它何时被删除,但这些知识可能会很有用。无论如何,我认为时间戳是一个很好的标志。
-
我同意一般观点。然而,先发制人的需求的一个可能问题是,它可能会欺骗其他开发人员搜索当前使用该(时间戳)信息的位置。当它实际上没有在某个地方使用时,它代表一个松散的线程,这对于初学者来说通常是令人沮丧和耗时的。
标签: ruby-on-rails activerecord gmail undo revert