CanCan 및 MetaWhere
3052 단어 cancan
묘사
능력에 있어서.rb:can :read, Brand, :responsibilities => { :user_id => user.id, :role => { :name.not_eq => "No Access" } }
accessible by를 호출할 때, 이 방법은 잘 작동하지만, 끼워 넣은 load 와authorize 자원을 사용할 때, 이 방법은 효력을 상실합니다.토론 #1
CanCan도 루비를 사용하여 권한을 정하기 때문에:name.not_eq
를 루비 비교로 전환해야 한다.나는 이 점을 해낼 수 있는 간단한 방법이 있는지 열심히 연구할 것이다.토론 #2
MetaWhere의 원본 코드를 보십시오. 가장 직접적인 해결 방안은 라이브러리의 모든 조건 클래스에 to 블록 유형을 추가하는 방법인 것 같습니다. 그리고 이 블록을 추출하여 can 방법의 일반적인 블록 매개 변수로 사용합니다.사상
이브지니.
토론 #셋
나는 간단한 matches?
원 조건 방법 하나면 충분하다고 생각한다.주어진 대상이 주어진 조건과 일치하면true/false를 되돌려줍니다.그런 다음 활성 레코드 어댑터에서 사용할 수 있습니다.블록을 함부로 움직일 필요가 없다.토론 #4
맞아요.이 두 가지 선택의 논리는 모두 차이가 많지 않다.나는 유사한 문제를 수리할 수 있도록 루비 기술을 여전히 연마하고 있다.나는 이런 물건을 나의 프로젝트를 위해 일하게 하고 싶다.일단 내가 무슨 일이 생기면, 나는 너에게 내가 성공했는지 여부를 알려줄 것이다.너는 안배할 시간이 있니?내가 이렇게 묻는 것은 내가 어떤 해결 방안을 제시하든 신뢰를 받지 말아야 하기 때문이다.내 눈보다 더 노련할 거야.
이브지니.
토론 #5
Meta에matches?
비헤이비어를 추가하면 CanCan으로 가져올 수 있습니다.MetaWhere에 추가할 계획이라면 테스트를 추가하는 것도 좋습니다.이렇게 하면 코드가 정상적으로 작동하는 것을 확보할 수 있다.
토론 #6
나는 이것이 개인 조건 유형에 속한다고 믿는다.나는 이곳에서 개발과 테스트를 진행할 것이다.에 문의가 성공/실패합니다.Ivgeni
토론 #7
가 MetaWhere의ernie와 짧은 교류를 한 후에 나는 아직 진정으로 어떤 진전도 얻지 못했다.아마도 내가 문제의 요점을 잘 표현하지 못했기 때문일 것이다.비행기표 링크입니다.http://metautonomous.lighthouseapp.com/projects/53011/tickets/32-feature-request-transform-hash-into-a-block
내가 그것을 열었을 때부터 그것은 '무효'
토론 #8
로 표시되었다. 네, 그는 그것이 핵심에 있기를 원하지 않는 것 같아서, 이것은 CanCan에서 이루어져야 할 것 같습니다.그것은 그렇게 깨끗하지는 않겠지만, 그리 나쁘지는 않을 것이다.나는 분기를 추가하고 시작점을 만들 것이다.나는 완성된 후에 대답을 할 것이다. 이렇게 하면 다른 사람들이 대답을 하고 실현을 기입할 수 있다.토론 #9
네, 현재 "meta where"분기가 있습니다. "gt"와 "lt"조건에 대한 초기 지원이 있습니다.누구든지 포크로 이것을 찍고 나머지 조건을 기입할 수 있다.이벤트의 레코드 어댑터와 규범만 편집해야 합니다. 규범을 실행하려면 이 동작을 실행하십시오.MODEL ADAPTER=활성 레코드 패키지
모델 어댑터 = 활성 레코드 라크
토론 #10
@hazah, 이 기능을 만들 계획입니까?만약 내가 알지 못하게 한다면, 나는 할 것이다. 왜냐하면 나는 곧 1.6버전을 발표할 계획이며, 이것을 얻기를 희망하기 때문이다.토론 #11
저는 계속 노력할 것입니다. 왜냐하면 이것은 너무 오래 걸리지 않을 것이라고 생각하기 때문입니다. 저는 1.6을 얻고 싶습니다.미안하지만, 네가 이렇게 하려고 한다면.토론 #12
MetaWhere와 함께 사용할 수 있는 여러 가지 비교를 추가하여 마스터에 통합했습니다.그것은 곧 1.6 버전에서 발표될 것이다.그것은 여전히 Or, And, Not 연산자를 지원하지 않지만, 나는 지금 그것을 좋은 것이라고 부른다. 왜냐하면 나는 이 기능의 사용이 비교적 많지 않다고 생각하기 때문이다.나는 다른 시간에 그것들을 들어올 것이다.다른 사람이 이 기능을 추가하고 싶으면 마음대로 하세요.
토론 #13
@ryanbOr를 보고 싶지 않습니다.나는 내가 이 일을 할 자격이 있는지 확실하지는 않지만 한번 해 보고 싶다.그래서 포크로 나의 성공 여부를 알려줄게.토론 #14
@ryanb가 코드를 철저히 읽은 후에 나는 단지 루비 기술로 어떤 내용도 추가하지 않았다는 결론을 얻었다.적어도 아직은 아니야.그래서 지금 나는 어떤 코드도 제공하지 않을 것이다.토론 #15
@hazah, 관심 가져주셔서 감사합니다.MetaWhere 코드를 찾아봤는데 어떻게 작동하는지 정확히 설명하기 어려웠어요.이것이 바로 내가 아직 그것을 통합하지 않은 이유다.Reference
이 문제에 관하여(CanCan 및 MetaWhere), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/ryanb/cancan/issues/194텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)