我正在使用带有设计宝石的rails 3 我试图找到一种方法让用户只编辑他们创建的帖子/评论 我应该为此添加CanCan宝石还是我可以用设计来做?或者只是可以进行简单的Active Record查询吗?
非常感谢。
答案 0 :(得分:10)
假设您在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
操作。
答案 1 :(得分:6)
Devise创建一个哈希current_user
,您可以在控制器,模型和视图中使用它。因此,创建一个类似这样的检查应该很容易:
@comment = Comment.find(params[:id])
if current_user.id == @comment.user.id
# yadda
end
答案 2 :(得分:1)
CanCan对您的需求有点过分,但对于以后的演变会更灵活。
否则,只需比较user_id和author_id。