如何使用Cancan修复权限错误?

时间:2013-03-27 14:32:13

标签: ruby-on-rails authorization cancan

我正在尝试在我的Rails应用程序中使用Cancan进行身份验证,但我遇到了麻烦。我的用户表中有两列名为admin和owner,两列都是boolean。我的ability.rb文件检查是否为真,然后提供适当的权限。似乎未登录的用户的权限+作为管理员工作的用户。但是,对所有者的许可似乎不起作用。我无法在我的视图中查看使用此权限的链接。

我已将load_authorize_resource放在PlacesController的顶部。

def initialize(user)
    user ||= User.new  # Guest user
    if user.admin?
        can :manage, :all
    else
        can :read, :all
        if user.owner?
            can :create, Place
        end
    end

    # can :read, :all
end

我可以将其视为管理员,但不是作为所有者...但我应该能够作为所有者。

<% if can? :create, @place %>
    <%= link_to 'New place', new_place_path %>
<% end %>

1 个答案:

答案 0 :(得分:0)

你应该写,

 <% if can? :create, Place %>
  <%= link_to 'New place', new_place_path %>
 <% end %>

在类级而不是对象上创建工作。