Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 坎坎和设计不起作用_Ruby On Rails_Ruby_Devise_Cancan - Fatal编程技术网

Ruby on rails 坎坎和设计不起作用

Ruby on rails 坎坎和设计不起作用,ruby-on-rails,ruby,devise,cancan,Ruby On Rails,Ruby,Devise,Cancan,我已经修改了我的designe表User,以便有一个clearance列。此列是表示用户权限(读、读/写、完全控制)的数字(1-3)。与我正在阅读的所有示例不同,我的Clearance(示例中的角色)不是一个具有关系的单独表,而是designe表(User)中它自己的列。其默认值为1 My ability.rb看起来像这样: class Ability include CanCan::Ability def initialize(user) user ||= User.new

我已经修改了我的designe表User,以便有一个clearance列。此列是表示用户权限(读、读/写、完全控制)的数字(1-3)。与我正在阅读的所有示例不同,我的Clearance(示例中的角色)不是一个具有关系的单独表,而是designe表(User)中它自己的列。其默认值为1

My ability.rb看起来像这样:

 class Ability
 include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.clearance.equal?("2")
      can :create, Post
      can :manage, Post, :user_id => user.id
    else
      can :read, :all
    end
  end

end
我已经把我见过的其他例子(我对Rails很陌生,但除非绝对必要,否则尽量不寻求帮助)都写了下来,目的是让净空值为2的用户可以创建帖子并只管理他们的帖子。我还包括了这一点,因为我还没有为1和3编写代码,所有其他的通关号码都可以读取所有内容

然而,很明显,Cancan认为我的用户(确认的清除级别为2)属于“其他”条款,因此我只能阅读帖子。如果我尝试创建一个新的页面消息,我得到一个警告,您无权访问此页面消息。
我迷路了。帮助?

这可能是因为清除列是一个整数吗?在这种情况下,您应该编写
user.clearance==2
,而不是像您编写的那样。

就是这样。谢谢你,伙计。就像我说的,我是新来的。但我正在学习。只要Stack允许,我会检查你的答案。