Ресурсируйте с помощью Cancan, Devise и Rolify, чтобы ограничить доступ к ресурсам
Если у меня есть настройка CanCan с Devise и Rolify, я должен иметь возможность использовать resourcify для ограничения доступа к различным типам ресурсов, верно?
Например.
Скажем, у меня есть организационная модель, которая имеет отношение has_many с model_a.
Пользователи также имеют единственную организацию, к которой они принадлежат. У пользователей есть много экземпляров model_b в качестве ассоциации. Я хочу ограничить область доступа пользователей ко всей моей организации только той организацией, к которой они принадлежат.
Я должен иметь возможность настроить что-то вроде этого для класса способностей:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
org_id = user.organization.id unless user.organization.blank?
if user.has_role?(:user)
can :access, :home
can [:read, :calendar], :model_a, :organization_id => user.organization.id if user.organization
can :read, :model_b, :user_id => user.id
can [:read, :update], :users, :id => user.id
end
end
Но мои разные ресурсы продолжают появляться в разных частях моего приложения, если я не ограничиваю свои запросы только этой организацией для конкретного пользователя. Что дает? Я думал, что Rolify должен сделать это автоматически для меня? Или я должен использовать resourcify в моем классе model_a и model_b, чтобы установить это? Если да, то не нужно ли мне также настроить таблицы соединения для обеих этих моделей с моей таблицей rolify? Или это может быть полиморфным?
Спасибо!