CanCan Может создавать ресурс приглашения, если пользователь может управлять группой. - PullRequest
0 голосов
/ 04 мая 2020

У меня определена следующая групповая способность:

# Group abilities
can :manage, Group do |group|
  user.in_group?(group, as: :owner)
end

то, что я хочу для приглашения, выглядит примерно так:

can :manage, Invite do |invite|
  can?(:manage, invite.group)
end

Другими словами, я хотел бы поддержать пользователей имея возможность создавать приглашения для группы, владельцем которой они являются. Поскольку у групп может быть несколько владельцев (через объект GroupMemberships), я не могу использовать правила простой ассоциации ha sh. Я также не могу использовать блок, потому что в InvitesController#create нет экземпляра @invite.

Как бы вы, go, написали правило способности для этого сценария?

Ответы [ 2 ]

0 голосов
/ 05 мая 2020
can :manage, Invite, group: { group_memberships: { user: user, membership_type: 'owner' } }

- это способность, которая в итоге работала для действия create со следующими перехватчиками CanCanCan в контроллере:

class InvitesController < ApplicationController
  load_and_authorize_resource :group
  authorize_resource :invite, through: :group
0 голосов
/ 04 мая 2020

если я вас понял и крошечный объем кода предоставлен правильно, вы можете сделать это:

can :manage, Invite do |invite|
  user.in_group?(invite.group, as: :owner)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...