2010-11-29 5 views
1

나는 사용자, 블로그, 게시, BlogMembership 모델을 포함하는 레일 응용 프로그램이 있습니다. 능력 클래스에서cancan 규칙 생성 문제

class BlogMembership < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :blog 

    # Membership types: 
    SUBSCRIBER = 0 
    AUTHOR = 1 
    MODERATOR = 2 
end 

class Blog < ActiveRecord::Base 
    has_many :posts 
    has_many :memberships, :class_name => "BlogMembership" 

    # Blog memberships 
    def subscribers 
    self.memberships.where(:membership_type => [BlogMembership::SUBSCRIBER, BlogMembership::AUTHOR, BlogMembership::MODERATOR]).collect(&:user) 
    end 

    def authors 
    self.memberships.where(:membership_type => [BlogMembership::AUTHOR, BlogMembership::MODERATOR]).collect(&:user) 
    end 

    def moderators 
    self.memberships.where(:membership_type => BlogMembership::MODERATOR).collect(&:user) 
    end 
end 

(내가 액세스 제한에 대한 캉캉을 사용하기 때문에) 내가 블로그 사용자와 운영자의 액세스를 제한하려고 노력하지만, 모든 사용자가에 게시물을 보낼 수 있습니다

if user.is? :moderator 
    can :manage, Post do |post| 
    post.blog.moderators.include? user 
    end 
end 

규칙 다음 어떤 블로그.

다음 관계 계획을 위해 능력 클래스에서 규칙을 올바르게 구성하는 방법을 알려주십시오.

+0

컨트롤러에서 사용자가 게시물을 보낼 수있는 권한이 있는지 확인하는 방법은 무엇입니까? – DNNX

답변

0

그리고이 구문을 시도해보십시오.

can :manage, Post do |action, post| 
    post.blog.moderators.include? user 
end 
+0

작동하지 않음 : (( –

+0

) ability.rb를 게시 할 수 있습니까? –

+0

http://pastie.org/1337785 –