리소스 및 컬렉션 로드
3420 단어 cancan
묘사
색인과 집합이 자원을 불러오지 않는다는 테스트를 보고 놀랐습니다.:)나는 좀 충동적이어서 보충할 수 있을 것 같다
resource_base.accessible_by(@controller.current_ability)
controller\u 에셋으로 이동합니다.rb, 그리고 관련 방법까지...모음집을 자동으로 불러옵니다.이것은 rails3의 딜레이 로드에 가깝습니다. 이것은 하나의 그룹이 아니라 하나의 역할 영역이기 때문에 필요하면 더 많은 역할 영역에서 링크를 할 수 있습니다.토론 #1
설명하기 위해서, 색인 작업은 백엔드에서accessible_by
before 필터에서 사용하기를 원합니다. 다른 작업에서 단일 기록을 불러오는 것과 유사합니까?Products Controller가 있다고 가정하십시오.CanCan에서 load_resource
하면 before 필터가 색인 작업을 수행합니다.@ 제품 = 제품.접근가능(현재 기능)
그렇다면 더 많은 제한을 늘리고 싶다면 이 범위를 통해 실현할 수 있을 것 같다.
def 인덱스
@products=@products.여기서 (:available=>true)
끝맺다
이것은 단지 하나의 범위이기 때문에 성능 원가가 거의 없다.따라서 한 사람이
@products
를 다른 내용으로 설정하거나 사용하지 않기로 결정하면 아무런 피해도 입지 않는다.나는 이 생각을 좋아하지만, 그것은 활동 기록이나 그 어떠한 응답에도 적용된다.
accessible_by
나는 이 문제를 토론하기 시작했는데, 모두들 어떻게 생각합니까?토론 #2
마찬가지로 기술이 네모난 블록으로 정의되면 효과가 없다.이것과 그것은 단지 활동 기록 사이에 있기 때문에, 나는 그것을 보존하는 경향이 있다. 색인 작업에 수동으로 추가된 것이다.토론 #셋
블록을 사용할 때 나는 로드와 권한 수여 자원이 어쨌든 불가능하다고 생각한다.왜 한 문제가 너에게 영향을 줄 수 있니?그것은 칸칸이 정의한 것이다..이외에, 우리는 그것이 응답하는지 확인하고, 우리가 이미 만들고 있는 것을 건너뛸 수 있습니다.나는 포크로 초고를 부칠 것이다...토론 #4
난http://github.com/dgm/cancan/tree/collection_resources토론 #5
부탁 고마워요. 제가 가볼게요.블록은load_and_authorize_resource
에 사용할 수 있지만 accessible_by
는 사용할 수 없습니다.토론 #6
오, 먼저 불러오고 권한을 부여하기 때문입니다.나는 이것이 성명성 권한 수여와 주요한 차이라고 생각한다.자원이 하나밖에 없어요. 좋은 것 같아요...모든 종류의 집합에 대해 자동으로 불러오는 데 도움을 줄 수 있는 명칭이 있는 것이 가장 좋다.우리는 여전히 테스트를 추가해서 그것이 실행 가능한지 확인할 수 있으며, 만약 실행 가능하지 않으면 퇴출할 수 있다.
토론 #7
네, 현재 능력이 블록을 사용했는지 물어볼 수 있습니다. 그렇다면 간단하게 말하면 사용하지 않습니다.나는@products
실례 변수를 사용할 수 없는 상황에서 어떤 값으로 설정해야 하는지 확실하지 않다.나는 그것으로 하여금 때로는 묵묵히 설정하게 하고 싶지 않다. 때로는 그렇지 않다.토론 #8
블록으로 인해 사용할 수 없을 때 대상에 errors 를 설정하여 템플릿이 개발자에게 오류를 일으키도록 합니까?토론 #9
오류?너는 예를 하나 들 수 있니?토론 #10
의 오류?표준 rails 오류 보고서...또는 우리는 실시간 메시지를 삽입할 수 있다...개발자에게 일깨워주는 건 어렵지 않을 거예요...토론 #11
모델의 표준 오류는 이런 집합이 아닌 단일 모델을 처리하는 데 사용된다.플래시는 개발자가 아닌 사용자를 일깨워 주는 데도 사용된다.그러나 어쨌든 우리가 오류가 발생하면 개발자는 어떻게 오류를 없앨 것인가?만약 사용할 수 없다면
@products
accessible_by
를 0으로 설정하는 것이 나의 최선의 해결 방안인 것 같지만, 때로는 설정하고 때로는 설정하지 않는 불일치성을 좋아하지 않는다.토론 #12
IMHO, 건너뛰기(0으로 설정하지 말고 설정하지 마세요) 지금처럼 불가능할 때.개발자는 블록과 같은 모호한 권한을 부여받아서 그 범위를 확정할 수 없다는 것을 분명히 해야 한다.이 경우, 당신은 지금 이미 한 것처럼 수동으로 돌아가야 합니다.나는 소장품이 가능한 한 많이 나를 위해 불러오는 것을 좋아한다. 왜냐하면 그것은 더욱 건조하기 때문이다. 이것이 바로 자원을 불러오는 모든 의미이다.
load resource와load and Authorization resource 아래에 놓고 싶지 않다면,
load_and_authorize_resources
's' 를 추가하고, 하나의 자원에 사용할 수 있는 집합을 가정하십시오.토론 #13
생각한 후에 저는 이 생각에 대해 몸을 풀기 시작했고 이를 1.4에 추가하려고 노력했습니다.나의 가장 큰 걱정은 때때로 실례 변수를 설정할 때 불일치성이 존재하는데, 이것은 조건 산열과 블록 사이를 전환할 때 컨트롤러를 수정해야 한다는 것이다. 그러나 이것은accessible_by
에 있어서 이미 문제가 되었기 때문에 이것은 결코 새로운 일이 아니다.토론 #14
바로 제 생각입니다...색인 페이지가nil 오류를 되돌릴 때 개발자는 곧 경고를 보냅니다.그것도 잘 기록해라. 왜냐하면 나는 아주 오랜 시간이 걸려서야 그것이 자동으로 완성된 것이 아니라는 것을 발견했기 때문이다인스턴스 집합 AD674EAF674EAF674EAF679EAF674EAF674EAF674EAF674EAF454의 인스턴스 집합Reference
이 문제에 관하여(리소스 및 컬렉션 로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/ryanb/cancan/issues/137텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)