我正在使用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
但我没有在文档中的任何地方看到我定义作者只能管理本书的章节。是否有其他方式来授权一本书及其所有关系?或者我应该以某种方式将章节定义为属于本书?我没有通过书籍模型保存章节(它不是嵌套的)。
答案 0 :(得分:1)
可能的方法:
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
也许有更好的解决方案......