2012-02-23 85 views
2

我使用CanCan來定義用戶能力,但我只是遇到了一個障礙,我試圖讓用戶通過它的父母來管理模型。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

一種可能的方法:

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 

也許有一個更好的解決辦法...