0

CancanとDeviseを使った簡単なセットアップがあります。

「管理者」と「場所」を所有するユーザーにのみ編集ボタンを表示したい:

したがって、show.html.erbには

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

私のability.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:私の役割は配列に保存されます。例:役割["ユーザー"、"管理者"]そしてうまく機能します。

4

1 に答える 1

0

私はそれを使っています

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

私はそれが誰かを助けることを願っています!

于 2012-07-17T13:03:28.520 に答える