Ruby on rails 如何限制用户仅编辑其记录

Ruby on rails 如何限制用户仅编辑其记录,ruby-on-rails,ruby-on-rails-3,devise,Ruby On Rails,Ruby On Rails 3,Devise,嘿,我希望你能帮我 我将rails 3与Desive gem一起使用。 我试图找到一种方法,让用户只编辑他们创建的帖子/评论。 我应该为此添加坎坎宝石还是可以使用Desive?或者只需要一个简单的活动记录查询就可以了 非常感谢。设计创建一个哈希当前用户,您可以在控制器、模型和视图中使用它。因此,创建一个支票应该很容易,它可以执行以下操作: @comment = Comment.find(params[:id]) if current_user.id == @comment.user.id #

嘿,我希望你能帮我

我将rails 3与Desive gem一起使用。
我试图找到一种方法,让用户只编辑他们创建的帖子/评论。
我应该为此添加坎坎宝石还是可以使用Desive?或者只需要一个简单的活动记录查询就可以了


非常感谢。

设计创建一个哈希
当前用户
,您可以在控制器、模型和视图中使用它。因此,创建一个支票应该很容易,它可以执行以下操作:

@comment = Comment.find(params[:id])
if current_user.id == @comment.user.id
  # yadda
end 

CanCan对于你的需求来说有点过分了,但是对于以后的进化来说它会更灵活


否则,只需比较用户id和作者id。

假设您在
用户
发布
/
注释
之间存在关系,您可以使用此关系在
编辑
操作中仅获取属于用户的记录:

class PostsController < ApplicationController
  def edit
    # Instead of this:
    # Post.find(params[:id])
    # Use this:
    current_user.posts.find(params[:id])
  end
end
class PostsController
只有当前用户创建了帖子,才能找到帖子


当然,你也必须修改
更新
操作。

当前用户.comments.include?(@comment)
我认为使用此方法仍然会允许恶意用户通过编辑url来编辑属于他人的帖子/评论。(即…../comments/1/edit)我是否不知道这是如何阻止用户以我刚才描述的方式进行编辑的?好处是,如果找不到帖子,它将自动显示404响应。隐马尔可夫模型。。但这在技术上并不正确。“未授权”或类似的可能更好。从长远来看,IMO cancancan是一条道路。通过这种方式,你拥有更多的权力和控制权,但代价是学习曲线很小。