리소스 및 컬렉션 로드

3420 단어 cancan

묘사

색인과 집합이 자원을 불러오지 않는다는 테스트를 보고 놀랐습니다.:)
나는 좀 충동적이어서 보충할 수 있을 것 같다
resource_base.accessible_by(@controller.current_ability)
controller\u 에셋으로 이동합니다.rb, 그리고 관련 방법까지...모음집을 자동으로 불러옵니다.이것은 rails3의 딜레이 로드에 가깝습니다. 이것은 하나의 그룹이 아니라 하나의 역할 영역이기 때문에 필요하면 더 많은 역할 영역에서 링크를 할 수 있습니다.

토론 #1

설명하기 위해서, 색인 작업은 백엔드에서 accessible_bybefore 필터에서 사용하기를 원합니다. 다른 작업에서 단일 기록을 불러오는 것과 유사합니까?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의 인스턴스 집합

좋은 웹페이지 즐겨찾기