使用rails 4.0的cancancan能力

时间:2015-04-24 13:31:48

标签: ruby-on-rails-4 cancancan

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

1 个答案:

答案 0 :(得分:0)

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