CanCan,Devise和“current_user”

时间:2012-07-17 08:36:19

标签: ruby-on-rails-3 devise mongoid cancan

我使用Cancan和Devise进行了简单的设置。

我想只向“管理员”和拥有“位置”的用户显示编辑按钮:

所以在show.html.erb我有

<% if can? :manage, location, :user_id == current_user.id %>
    <%= link_to 'Edit', edit_location_path %>
<% end %>

我的能力.rb看起来像这样

if user.roles.include?('User')
  can [:show, :index, :create], Location
  can :manage, Location, :user_id => user.id
end

locationController在最上面包含了这个:

load_and_authorize_resource

用户ID在Location.user_id

中引用

但它没有显示编辑按钮......

我错过了什么吗?

PS:user.id在视图中不起作用。和current_user.id在ability.rb

中不起作用

PPS:我的角色存储在一个数组中,例如:Roles [“User”,“Admin”]并且运行良好。

1 个答案:

答案 0 :(得分:0)

我已经使用了

can :manage, Location, :user_id => user.id.to_s

我希望它有所帮助!