如何限制用户只编辑自己的记录
问题描述:
嘿,我希望你能帮助我。如何限制用户只编辑自己的记录
我正在使用rails 3和devise gem。
我想找到一种方法让用户只编辑他们创建的帖子/评论。
我应该为此添加CanCan gem还是可以用设计来完成?还是只有一个简单的活动记录查询可能?
非常感谢。
答
设计会创建一个散列current_user
,您可以在控制器,模型和视图中使用该散列。所以它应该是很容易地创建一个支票确实是这样的:
@comment = Comment.find(params[:id])
if current_user.id == @comment.user.id
# yadda
end
答
康康舞您的需求有点大材小用,但是这将是一个后来变阵更加灵活。
否则,只需比较user_id和author_id。
+0
谢谢!我会记住CanCan:D – daniel 2011-01-10 00:32:34
答
假设你有User
和Post
/Comment
之间的关系,你可以使用这种关系只取属于用户记录在您的edit
行动:
class PostsController < ApplicationController
def edit
# Instead of this:
# Post.find(params[:id])
# Use this:
current_user.posts.find(params[:id])
end
end
这只会发现后,如果当前用户已经创建了它。
当然,您也必须修改update
操作。
IMO cancancan是从长远角度来看的方式。你拥有更多的权力和控制权,但这是以小型学习曲线为代价的。 – BKSpurgeon 2017-02-14 22:20:17