2012-02-23 6 views
2

私はCanCanを使用してユーザーの能力を定義していますが、ユーザーが親を介してモデルを管理できるようにしようとしています。例えばcancan能力の関係

。 本には著者があり、書籍には多くの章があります。 著者だけがチャプターを管理できるようにしたい。 私のブックモデルにはauthor_idがあります。 私のチャプターモデルにbook_idがあります。私は

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

を持っている私のAbility.rbファイル内

が、私は著者が唯一の本の章を管理できることを定義ドキュメントのどこに表示されません。本と他のすべての関係を認可する別の方法はありますか?あるいは、私は何とかその章をその本の所属と定義することになっていますか?私はブックモデル(それは入れ子になっていない)を通して章を保存していません。

答えて

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 

たぶん、よりよい解決策があります...

関連する問題