2010-02-04 3 views
3

나는 Ryan Bates의 declarative authorization railscast를 팔로우하고 있습니다. 특정 기사 작성자가 자신이 소유자인지 여부에 관계없이 기사에 남아있는 주석을 편집 할 수 있도록 기능을 추가하려고합니다. 나는 그 일을 시도했지만 그 일을 할 수 없었다.신고 용 승인 - 기사에 남겨진 다른 댓글을 수정할 수 있습니까?

role :author do 
    has_permission_on :articles, :to => [:new, :create] 
    has_permission_on :articles, :to => [:edit, :update, :show] do 
     if_attribute :user => is { user } 
    end 
    **has_permission_on :comments, :to => [:edit, :update] do 
     if_attribute :article_id => is { user } 
    end** 
    end 

의견 줄에있는 has_permission을 수정하여 사용자가 자신의 기사에만 댓글을 남기면 댓글을 편집 할 수있게하려면 어떻게해야합니까?

감사

답변

3

에 답변 here을 찾을 수 있습니다, 규칙은해야 보이는 같은 :

role :author do 
    [...] 

    has_permission_on :comments, :to => [:edit, :update] do 
    if_attribute :article_id => is_in { user.article_ids } 
    end 
end 

, 의 변화가

선택적으로 is_in 에 의해 예고하십시오, 당신은 user.article_ids 01에 의해 변경 될 수 있습니다

+0

아 user.article_ids를 사용하는 것에 대해서 생각조차하지 않았습니다. 고마워. –

0

첫 번째 선언 ...

has_permission_on :articles, :to => [:edit, :update, :show] do 
    if_attribute :user => is { user } 
end 

... 완벽하게 작동 :user는 (현재 로그인 한 사용자 인 - CURRENT_USER)이 user와 같은 경우 때문에 당신이 할 수있는 권한이 선언 된 조치를 :articles에하십시오.

하지만 ... 두 번째에

has_permission_on :comments, :to => [:edit, :update] do 
    if_attribute :article_id => is { user } 
end 

를 보면 당신은 속성 :article_id 결코 user 로그인 현재와 동일하게 진행되지 않는 것을 볼 수 있습니다.

저는 이제 Rails 초보자입니다. 선언적 인증의 몇 가지 기본 기능을 사용 했으므로 문제에 대한 정확한 답변을 모르겠습니다. 하지만 if_attribute :article_id => is { user.articles.id }과 같은 내용의 user에 액세스 할 수있는 방법을 찾아야한다고 생각합니다.

은 어쩌면 당신은 그/그녀의 기사에 게시 된 의견을 편집 할 수있는 사용자 수 있도록하기 위해 문서

+0

그래, 나는 아무 도움없이 그 일을 시도했다. 나는 몇 가지 추가 매개 변수를 전달해야 할 것 같아요. –