首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails软件和硬删除操作

Rails软件和硬删除操作
EN

Stack Overflow用户
提问于 2013-10-01 22:14:12
回答 2查看 941关注 0票数 1

如果我有一个支持软删除(标准用户)和硬删除(对于管理员)的模型,那么最好的路由方法是什么?

在控制器中用方法中的逻辑处理两个请求在相同的delete操作下是否有意义,还是必须对不同的路由有意义?

从技术上讲,软删除是否被视为一种delete操作?

我知道这件事太复杂了,但任何建议都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-01 22:29:39

我可能会在一个动作中加入一个条件语句。这样,它对用户是透明的,用户也不可能通过猜测删除URL并将其发送到删除URL来破解破坏方法:

代码语言:javascript
运行
复制
# DELETE /thing/1
# DELETE /thing/1.json
def destroy
  @thing = Thing.find(params[:id])

  if current_user.admin? and !params[:soft_delete]
    @thing.destroy
  else
    @thing.soft_delete
  end

  respond_to do |format|
    format.html { redirect_to things_url }
    format.json { head :no_content }
  end
end

# views/things/show.html.erb
<%= button_to("Delete", thing_url(@thing), method: :delete) %>
<%= button_to("Soft Delete", thing_url(@thing, soft_delete: true), method: :delete) %>
票数 2
EN

Stack Overflow用户

发布于 2013-10-01 22:35:11

除非管理员可能需要执行软删除,否则对这两个操作使用相同的路由可以减少要处理的路由数。

对这两个操作都使用DELETE操作是可以的。从客户端的角度来看,它只是删除一些东西(不需要知道它是软的还是硬的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19126902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档