канкан способность через отношения - PullRequest
2 голосов
/ 23 февраля 2012

Я использую CanCan для определения способностей пользователей, но я наткнулся на загадку, в которой я пытаюсь разрешить пользователю управлять моделью только через ее родителя.

Например.У книги есть автор, у книги много глав.Я хочу, чтобы только автор мог управлять главами.У моей книжной модели есть author_id.У моей модели главы есть book_id.

в моем файле Ability.rb у меня есть

 user.has_role? :author
            can :manage, Book, :author_id => user.id
            can :manage, Chapter
            can :read, :all
        else

, но я не вижу нигде в документации, где я определяю, что автор может управлять только главами книги.Есть ли другой способ авторизовать книгу и все ее отношения?Или я должен как-то определить главу как принадлежащую книге?Я не сохраняю главу через модель книги (она не является вложенной).

1 Ответ

1 голос
/ 31 июля 2012

Возможный подход:

 user.has_role? :author
            can :manage, Book, :author_id => user.id
            can :manage, Chapter do |chapter|
              chapter.book.author_id == user.id
            end
            can :read, :all
        else

Может быть, есть лучшее решение ...

...