모형상의 홀수 권한 수여 행위를 가리키다
묘사
죄송합니다. 제가 질문을 하나 더 하면 잠시 찾았지만 운을 찾지 못했습니다.도움말 감사합니다:)다음 코드는 자체 참조 모델에 사용됩니다.유형은 사실상 하나의 논단이지만, 무미건조한 코드를 위해 나는 이 길을 갔다.하나의 포럼에서 상태를false로 설정하려고 시도할 때 이 문제가 발생합니다.이것은 가설이다.
Class A에는 2개의 포럼이 있습니다.카테고리 A의 상태는true, 포럼 1의 상태는true, 포럼 2의 상태는false로 설정됩니다.이상적인 상황에서 당신은 포럼 2가 아니라 유형과 포럼 1을 볼 수 있어야 합니다.실제 결과는 권한 수여가 거부된 이상을 일으켰고 전체 색인 작업에 접근할 수 없습니다.
능력rb
can :read, Forum, :state => true
논단rb
belongs_to :category, :class_name => "Forum"
has_many :forums, :dependent => :destroy, :foreign_key => "category_id"
나는 너의 관제원이다.rb
load_and_authorize_resource :forum, :instance_name => :category, :only => :index
load_and_authorize_resource :forum, :through => :category, :only => :index
색인html。직원 재교육국
Forums Controller가 중첩 컨트롤러입니까?그러니까
토론 #1
개의 선물이 있습니까?CanCan은 이 파일을 찾습니다. 존재하지 않으면 상위 리소스를 찾을 수 없으므로 액세스를 거부합니다.만약 파라미터가 호출된다면, 이것은 아마도 당신이 원하는 것일 것입니다.
다음은 로그의 문제 예입니다.두 번째 포럼 마운트 줄을 보면 권한 부여 필터가 적용되지 않은 것을 발견할 수 있습니다.두 개의 검색어는state='t'를 찾아야 하지 않습니까?
<% @categories.each do |category| %>
<p><%= category.title %></p>
<% category.forums.each do |forum| %>
<p><%= forum.title %></p>
<% end %>
<% end %>
load_and_authorize_resource :category, :class => Forum, :only => :index load_and_authorize_resource :forum, :through => :category, :only => :index
토론 #2
The ForumsController isn't nested under anything than itself. ( if that makes sense ) The forum_id isn't present because we're supplying category_id as the foreign_key for the parent association.
토론 #셋
I just understood what you're saying. No, there's no /category/
maybe this will help, is there a way to specify a "filter" of sorts in the controller? For example
load_and_authorize_resource :category, :class => Forum :category_id => nil, :only => :index
params[:forum_id]
Shouldn't both queries look for state = 't'?
네, 그래야 하는데, 여기에서 무슨 일이 일어났는지, 두 번째 조회는 어디에서 생성되었는지 잘 모르겠어요.
루트에 플러그인이 없으면, 호출을 하나만 지정해야 합니다.당신이 원하는 확실한 행동은 무엇입니까?색인 작업을true 상태의 클래스만 불러오고 싶습니까?
def 인덱스
@ 범주 = 포럼여기서 (:category id=>nil,:state=>true)
끝맺다
where 자구에 추가 필터를 추가하려면 index 작업에서 다시 호출하십시오.예컨대.
불러오기 및 권한 부여 자원:category,:class=>Forum,:only=>:index
def 인덱스
@categories=@categories.여기서 (: category id=>nil)
끝맺다
이것은 네가 원하는 것이냐?
category_id
Forums Controller와 모델의 중첩은 라우팅 중첩이 아닙니다.이 모든 것은 모델 연관을 통해 이루어진 것이다.나는 내가 매우 잘 설명했다고 생각하지 않지만, 이것을 시험해 보겠다.다음은 실제 코드의 요점입니다.https://gist.github.com/56b0d1a7c104126ef079
1. 포럼 모델은 유형과 포럼에 사용
2. 범주는 nil category id(부모 없음)만 있는 포럼입니다.
3. 색인 작업에서 @categories를 불러올 때has many association
토론 #4
@gitt를 불러옵니다. 이 줄의 보기에 문제가 있습니다.<% 범주.논단do | 포럼당|%>
이것이 바로 두 번째로 포럼을 직접 얻는 조회를 만드는 이유입니다. 이것은 CanCan을 거치지 않았기 때문에 권한 검사를 적용하지 않았습니다.여기서 직접 Active Record 연관을 사용하면 CanCan이 Active Record의 내용을 덮어쓰지 않습니다.
사용자가 방문할 수 있는 플러그인 포럼만 얻으려면 이렇게 전화해야 한다.
토론 #5
<% 범주.논단를 통해 액세스할 수 있습니다.do | 포럼당|%>이것은 포럼을 사용자가 방문할 수 있는 포럼으로만 제한할 것이다.
Reference
이 문제에 관하여(모형상의 홀수 권한 수여 행위를 가리키다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/ryanb/cancan/issues/198텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)