0

我在我的 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
4

1 回答 1

0

如果它适用于主题,则您的评论模型一定有问题。评论表是否有一个 user_id 列来存储评论的作者或任何其他方式来检查其所有权?可能会comment.try(:user)返回nil,然后无法为用户提供正确的权限。

于 2015-04-30T10:36:06.703 回答