전체 텍스트 검색용 Cancan+Xapit
3389 단어 cancan
묘사
안녕하세요,라이언은 Xaam으로 프로그래밍을 하기 때문에, 나는 지금 Xaam으로 프로그래밍을 하고 싶다.나는 두 개의 환매 협의에서 모두 교차 장부를 작성했다. 왜냐하면 나는 그것들이 함께 일하게 할 수 없기 때문이다.
https://github.com/ryanb/xapit/issues#issue/49
성공한 사람 있어?!
토론 #1
CanCan은 모델 어댑터 레이어가 있기 때문에 가장 좋은 곳입니다.작업 방법에 대한 좋은 예는 mongoid adapter를 참조하십시오.동작은 비슷하지만 규칙을 Xapit 범위로 변환하는 Xapit 어댑터를 만들어야 합니다.규격을 잊지 마라.
Xapit
search
방법이 여기에 작용해야 한다.이것은 Xapit::Collection
대상을 되돌려준 다음 search
다시 호출해서 (예: 페이지 나누기) 옵션을 추가할 수 있습니다.만약 네가 이 일을 하고 싶다면, 나는 너의 요구를 기꺼이 받아들일 것이다.여기서 당신의 진전이나 어떤 문제도 발표하세요.
토론 #2
제작model adapter에 대한wiki 페이지를 추가했습니다.Xapit: Collection 대상에
accessible_by
를 추가하는 것도 권장합니다. 모델 자체의 행동을 덮어쓰고 싶지 않기 때문입니다.너는 그것을 이렇게 부른다.사람?수색하다.접근가능(현재 기능)
새 검색을 되돌려줍니다. 그러면 Xapit 검색에 연결할 수 있습니다.
토론 #셋
안녕, 라이언, 빨리 대답해줘서 고마워.나는 너의 건의를 연구할 것이지만, 오늘이 아니다.어쨌든 나는 쓰기에 그다지 익숙하지 않다...기대해 봅시다.
나의 현재 문제는 Xapit에 SQL 조건 문자열을 주는 것이다. 이 예에는 응답
:conditions
인자가 없다.배?검색(3, 4, 5) 중
boats
위의 요청은 모두 user_id
항목을 제공하며, "sail_"
선별하지 않습니다.내가 이 문제의 답을 찾았을 때, 나는 어댑터를 구축할 것이다. (한마디 하자면,wiki의thx)
:conditions
Xapian은 SQL 데이터베이스가 아니기 때문에 SQL을 전달할 수 없습니다.그러나 이것은 문제가 아니다.몬골드도 그렇고model adapter 페이지에 표시된 토론 #4
는 사용자가rule.conditions
에 전달하는 방법의 산열일 뿐입니다.Xapit에 직접 전달할 수 있어야 합니다.모델 수업.검색(: 조건=>rule.conditions)
SQL은 걱정할 필요가 없습니다.
can
안녕, 라이언, 나는 그 화제로 돌아왔다.나는 Xapian이 SQL 데이터베이스가 아니라는 것을 잘 알고 있지만, 이것은 activrecord 결과를 얻을 수 있지만, SQL 조건을 제시할 수 있다.그래, 조건 산열도 강하지 않아서 나의 요구를 만족시킬 수 없다(어쨌든 나는 산열로 나의 능력을 설정하는 데 성공하지 못했다)
블록 조건을 작성하는 가장 간단한 방법 중 하나는 다음과 같습니다.
def can 참여 가능(행동, klass, 사용자)
klass=[klass]klass를 제외하고는.당신은 여자아이입니까?(어레이)
클라스.각각 | k |
table=k. 연결.quote_table_name(k.table_name)
can(action,k,[“#{table}.id IN(
참여에서 참여할 id 선택
그중에 참여 가능한 유형=?및 참여자 id=?)",
k, 이름, 사용자.id])do | o|
o. 참여있어요?{| r | r.participant==user}
끝맺다
끝맺다
끝맺다
내가 틀렸을지도 몰라.
어쨌든 나는 나의 능력을 재구성하여 어댑터에서 일할 것이다.
토론 #5
조건의 산열이 작용하지 않으면 블록을 제외하고 작용하는 내용을 전달해야 한다.Xapit의 예에서는 블록과 함께 이동하는토론 #6
객체가 됩니다.can(action,k,k.search(…))do |o|
o. 참여있어요?{| r | r.participant==user}
끝맺다
Xapit::Collection
호출에 아날로그 블록 행동의 내용을 추가할 수 있습니다.이 사용자 정의 객체를 처리하려면 Xapit 어댑터를 조정해야 합니다.예를 들어, Active Record Adapter에서 사용자 정의 SQL을 사용하는 방법을 확인할 수 있습니다.여기서 사용자 정의 Xapit 검색을 수행해야 하기 때문에 Xapit 어댑터를 사용할 가치가 없을 수도 있습니다.Ruby 블록을 사용하고 컨트롤러에서 Xapit
search
만 실행하면 블록의 권한을 시뮬레이션할 수 있습니다.당신의 시간과 노력에 감사 드립니다. 나는 당신의 해결 방안을 시험해 보겠습니다.그러나 나는 여전히 권한 수여와 색인을 처리하는 더 좋은 방법을 실현하고 싶다.
나는 방금 xapit가 모델 어댑터 층을 실현하는 것을 보았는데, 나도 cancan을 위해 어댑터를 구축할 수 있는지 알고 싶다. (아마도 더 쉬울 것이다.)
bye
search
새로운 xapit 방법으로 해결 방안 찾기추가 정보:https://github.com/ryanb/xapit/issues/issue/49
Thx는 모든 것에 적용
Reference
이 문제에 관하여(전체 텍스트 검색용 Cancan+Xapit), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/ryanb/cancan/issues/242텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)