我认为在销毁记录时使用“撤消”方法 ala gmail而不是显示一个恼人的弹出窗口,上面写着“你确定吗? ”,这一点很重要。
我实现这一点的方式是在模型中有一个“deleted_at”时间戳列,当调用destroy方法时它会被加上时间戳
def destroy
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, Time.now)
...
end
要还原/撤消,我只需将同一列设置为 nil
def revert
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, nil)
...
end
当我调用 find 方法时,我只需要添加一个条件来过滤掉“已删除”的 foos。也许设置一个 cron 或后台任务在一段时间后真正销毁“已删除”的 foo。
对我有用且易于实现,但我很好奇是否有更好的方法来实现此功能?也许有一个插件或gem提供了我不知道的这个?