加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Rails中实现gmail风格“撤消”的最佳方式是

发布时间:2020-12-16 20:29:06 所属栏目:百科 来源:网络整理
导读:我认为重要的是在销毁记录时使用“撤消”方法,而不是显示一个令人讨厌的弹出窗口,说“你确定吗? 我实现这个的方法是在模型中有一个“deleted_at”时间戳记列,当destroy方法被调用时,它将获得时间戳 def destroy @foo = Foo.find(params[:id]) @foo.update_a
我认为重要的是在销毁记录时使用“撤消”方法,而不是显示一个令人讨厌的弹出窗口,说“你确定吗?

我实现这个的方法是在模型中有一个“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或后台任务,在一段时间后真正摧毁“删除”foos.

对我来说很容易实现,但是我好奇的是,如果有更好的方法来实现这个功能?也许有一个插件或宝石提供这一点,我不知道?

解决方法

确实有一些插件可以在 Agile Web Development找到.

以下是与您的说明相符的插件的链接和摘要:

> Acts as Paranoid:使你的活动记录“偏执”.删除它们不会删除该行,但设置一个deleted_at字段.查找超载以跳过已删除的记录.
> Acts as soft deletable:提供软删除ActiveRecord模型的功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读