У меня есть две модели (Предмет и Тема).Они оба принадлежат третьим пользователям модели с ассоциацией has_many (у пользователя много тем и предметов).И Item, и Theme have_many: images.
Модель Image представляет собой полиморфную ассоциацию, поэтому в таблице есть столбцы imageable_id и imageable_type.Если бы у меня был и элемент с идентификатором 1, и тема с идентификатором 1, таблица выглядела бы как
id imageable_id imageable_type
------------------------------------
1 1 Item
2 1 Theme
. Я использую Declarative_authorization, чтобы переписать запросы SQL моей базы данных, чтобы пользователи не имели доступа к элементам.вне их аккаунта.Я хотел бы написать правило авторизации, которое позволит пользователям читать изображение только в том случае, если они могут прочитать принадлежащий ему элемент.Я не могу получить правильный синтаксис (возможно, он не поддерживается):
has_permission_on [:images], :to => [:manage], :join_as => :and do
if_attribute :imageable => is { "Item" }
if_permitted_to :manage, :items # Somehow I need to tell declarative_auth to imageable_id is an item_id in this case.
end
Тогда у меня было бы другое правило, имитирующее вышеупомянутое, но для тем:
has_permission_on [:images], :to => [:manage], :join_as => :and do
if_attribute :imageable => is { "Theme" }
if_permitted_to :manage, :themes # Somehow I need to tell declarative_auth to imageable_id is a theme_id in this case.
end
Любойидеи?Заранее спасибо!