Мой вопрос касается определения способности cancancan в следующем контексте.
У меня есть общая модель отношений между многими пользователями между сущностями пользователя и компании
class User < ApplicationRecord
has_many :company_users, dependent: :destroy
has_many :companies, through: :company_users
enum role:[:user, :admin, :superadmin]
end
class Company < ApplicationRecord
has_many :company_users, dependent: :destroy
has_many :users, through: :company_users
end
class CompanyUser < ApplicationRecord
belongs_to :company
belongs_to :user
end
Я хочу теперь определитьВозможность cancan, чтобы авторизованный текущий пользователь мог управлять всеми пользователями, принадлежащими к тем же компаниям, что и он.
У меня нет проблем с другими схемами многие ко многим (например, многие ко многим между Устройством и Компанией), как это
can :manage, Device, :companies => {:users => {:id => user.id}}
работает нормально!
но
can :manage, User, :companies => {:users => {:id => user.id}}
позвольте мне видеть, конечно, только текущего пользователя, потому что он находится в той же таблице пользователей.
Как я могу легко управлять этой способностью между пользователями, принадлежащими к одной компании, сохраняя отношения многие ко многим?
Спасибо за вашу помощь