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