【问题标题】:cancancan ability with rails 4.0使用 rails 4.0 的 cancancan 能力
【发布时间】:2015-04-24 13:31:48
【问题描述】:

我在我的 rails 应用程序中使用了 cancancan 身份验证机制。我只希望那些拥有自己帖子和 cmets 的用户不被编辑和删除,而管理员来管理所有事情。我的管理能力工作正常,但其他人没有工作。这是我的ability.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

结束 我应该怎么做才能正常工作。它适用于主题但不适用于 cmets

这是我的主题控制器中的一行

load_and_authorize_resource :topic

【问题讨论】:

    标签: ruby-on-rails-4 cancancan


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      相关资源
      最近更新 更多