我在rails应用程序中使用cancancan身份验证机制。我只希望编辑和删除自己的帖子和评论的所有者,以及管理所有内容的管理员。我的管理能力正常,但其他人没有工作。这是我的能力.rb文件
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if user.admin?
can :manage, :all
else
can :read, :all
can :create, Topic
can :update, Topic do |topic|
topic.try(:user) == user
end
can :delete, Topic do |topic|
topic.try(:user) == user
end
can :delete, Comment do |comment|
comment.try(:user) == user
end
# can :manage, Comment, :task => { :user_id => user.id }
can :update, Comment do |comment|
comment.try(:user) == user
end
end
end
端 我该怎么做才能正常工作。它适用于主题,但不适用于评论
这是我的主题控制器
中的一行load_and_authorize_resource :topic
答案 0 :(得分:0)
如果它适用于主题,那么您的评论模型肯定存在问题。评论表是否有一个user_id列,用于存储评论的作者或检查其所有权的任何其他方式?可能是comment.try(:user)
返回nil
,然后它无法为用户提供正确的权限。