0

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

我的能力.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)属于“其他”条款,因此我只能阅读帖子。如果我尝试创建一个新页面,我会收到一条您无权访问此页面的消息。我迷路了。帮助?

4

1 回答 1

1

这可能是间隙列是整数吗?在这种情况下,你应该写user.clearance == 2而不是你写的。

于 2012-07-29T19:32:52.667 回答