【发布时间】:2011-05-26 07:20:14
【问题描述】:
我正在为我的应用程序使用 cancan
我的能力.rb 类是
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if user.role? :admin
can :manage, :all
elsif user.role? :operations
can :manage, :all
elsif user.role? :customer_support
can :read, :all
else
user.role? :marketing
can :read, :all
end
end
end
我在 user.rb 中添加方法
def role?(role)
self.roles.include? role.to_s
end
我还添加 我的控制器中的 load_and_authorize_resource 说 products_controller 可以授权用户并允许他在此控制器中执行某些操作, 但我的问题是当用户以管理员身份登录时,他无法添加新产品,它给出了 cancan 的拒绝访问错误。
我的看法是
<% if can? :create, Product %>
<td class="action"><%= link_to 'Show', product %></td>
<td class="action"><%= link_to 'Edit', edit_product_path( product) %></td>
<td class="action"><%= link_to 'Destroy', product, :confirm => 'Are you sure?', :method => :delete %></td>
<% end %>
它也没有向管理员显示此链接,因为所有管理员都可以访问,但他仍然无法访问此操作?
我还缺少什么?
请帮忙?
【问题讨论】:
标签: ruby-on-rails authorization cancan