2016-11-04 3 views
1

나는 네임 스페이스가있는 리소스에 전문가를 사용하는 방법을 알아 내려고하고 있습니다.레일즈 5, 네임 ​​스페이스가있는 전문가들

나는 이것들에 문제가 있다고 말하는 다른 사람들의 많은 게시물을 읽었지만, 전문가의 보석 발행 추적기에 대한 그 이전의 토론은. 이슈 트래커는 해결책이 무엇인지에 대해 명확하지 않습니다. 그래서 저는 붙어 있습니다.

중첩 된 리소스에 대한 네임 스페이스 인 Stance라는 폴더가 있는데 그 중 하나를 개요라고합니다.

model.rb 파일이 호출됩니다

class Stance::Overview < ApplicationRecord 

컨트롤러가 호출 :

class Stance::OverviewsController < ApplicationController 

호출되는 DB의 테이블 : 내 응용 프로그램에서

create_table "stance_overviews", force: :cascade do |t| 

/정책 폴더를 만들 때 여러 가지 방법으로 정책을 만들었으며 여러 가지 시도를 통해보기에서 정책을 참조했습니다. 나는 작동하는 방법을 찾을 수 없습니다.)

내 조직보기에서
class Stance::OverviewPolicy < ApplicationPolicy 

이 (한 입장 :: 개요이있는), 내가 로컬 변수를 정의

나는 함께 overview_policy.rb라는 파일과 자세라는 폴더를 만드는 시도했습니다 : 뷰에서 다음

<% if current_user.organisation_id != @organisation.id %> 

    <%= render 'stance/overviews/internal', overview: @organisation.overview %> 
<% else %> 
    <%= render 'stance/overviews/external', overview: @organisation.overview %> 
<% end %> 

, 내가 노력하고있어 :

<% if policy(overview).show? %> 

<p><%= overview.explanation %></p> 

<% end %> 

나는 변화 O를 찾을 수 없습니다 이게 효과가있어. 내가 시도한 모든 것은 SO 게시물을 기반으로 한 추측이며, 그 중 대부분은 학자 이슈 트래커의 대화보다 선행합니다.

오류 메시지가 표시되지 않지만 콘텐츠를 렌더링해야 할 때 렌더링되지 않습니다.

누구나 내가 명성있는 자원으로 명석함을 사용할 수 있도록하기 위해 필요한 것을 볼 수 있습니까?

+0

Stance 또는 stance라는 정책 파일의 stance 폴더가 있습니까? 나는 이것이 모두 소문자 일 필요가 있다고 생각한다. 우리는 우리 모델 중 하나와 비슷한 설정을 가지고 있으며 잘 작동합니다. 그래도 컨트롤러에있는 유일한 권한입니다. – Scott

+0

내 정책 폴더 안에 'stance'라는 소문자 폴더가 있습니다. 방침에서 수업의 이름을 어떻게 지으니까? 나는이 일을하고있다 : class Stance :: OverviewPolicy Mel

+0

이것이 바로 내가 설치 한 방법이다. 어떤 오류가 발생합니까? – Scott

답변

0

내가 네임 스페이스 문제를 만났을 때 Pundit.policy()를 사용합니다.

클래스의 경우 뷰에 Pundit.policy(current_user,[:stance, :overview]).show?을 사용해야하며 컨트롤러에 authorize [:stance, @overview]을 사용해야합니다.

Pundit.policy(current_user,[:stance, :overview]).show?은 (는) in app/policies/stance/overview_policy.rb.

컨트롤러에 쇼에 authorize [:stance, @overview]을 쓰면 show? in app/policies/stance/overview_policy.rb.

관련 문제