如何只有用户编辑/更新/删除自己的问题?

时间:2014-02-07 15:56:44

标签: ruby-on-rails

我的用户有很多问题和问题。我试图弄清楚如何只让用户edit/delete/update提出自己的问题。我正在使用设计用户身份验证,但我只能弄清楚如何隐藏链接,如 <% if user_signed_in? %>显示这些链接,但我只想让当前用户修改它们(我假设还有一些方法可以访问这些链接以某种方式编辑/更新/删除。

谢谢!

3 个答案:

答案 0 :(得分:0)

您可以将问题的用户与当前用户进行比较,并根据以下内容显示链接:

<% if @question.user == current_user %>
  # show edit/delete links

这样,只有发布问题的用户才能查看链接并编辑/删除问题。

答案 1 :(得分:0)

我会做miahabdu所写的内容,但随后在控制器中的方法中添加验证。仅仅因为用户无法看到链接,他仍然可以使用编辑/更新/删除URL。隐藏链接只是化妆品。类似的东西:

    if question.user == current_user do
        .....do stuff

如果没有返回一些禁止的flash消息,说明他们只能编辑,更新,删除自己的消息。

希望它有所帮助!请不要隐藏链接,因为它无法保护用户数据。

答案 2 :(得分:0)

除了已发布的两个答案之外,我建议使用像CanCan这样的宝石,您可以在任何地方进行优雅的验证(至少应在客户端和服务器端进行验证)。

例如

If user.can? :destroy @post
  do a barrel roll
end
#Disclaimer: Syntax correctness not ensued.

GL&amp; HF。