1

我正在尝试在我的 Rails 应用程序中使用 Cancan 进行身份验证,但在这样做时遇到了麻烦。我的用户表中有 2 列名为 admin 和 owner,它们都是布尔值。我的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 %>
4

1 回答 1

0

你应该写,

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

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

于 2013-03-27T14:50:07.400 回答