2
class User < ActiveRecord::Base 
    has_many :followings, :as => :followable, :dependent => :destroy, :class_name => 'Follow' 
    has_many :follows, :as => :follower, :dependent => :destroy 

    define_index do 
    has follows.followable(:id), :as => :followable_id 
    has followings.follower(:id), :as => :follower_id 
    has follows.followable(:type), :as => :followable_type 
    has followings.follower(:type), :as => :follower_type 
    end 
end 
  1. 질문 : I 형 (항상 빈 배열)에서 검색 할 수 없습니다. 벌레? 추종자가 'AAA'유형 인 모든 사용자를 얻고 싶습니다.레일 + 생각 - 스핑크스의 다형성 연관

    User.search ''=이>와 {: follower_type =이> 'AAA'}

  2. 질문 : 왜 (인덱스 정의) 올바른 결과를 얻을 내 관계를 반전해야합니까 : 다음과 (: id), 다음과 같이 (: id), : as => : followable_id 대신 followable (: id), : as : followable_id id = 1 인 사용자에 대한 팔로어 목록을 얻고 싶습니다.

    User.search : with => {: followable_id => 1} # id가 1 인 사용자의 추종자 목록

Thx!

답변

2

첫 번째 질문과 관련하여 - 문자열 필터는 스핑크스에서 작동하지 않습니다. 이것은 (Sphinx가 새로운 기능을 지원할 때 Sphinx 1.10-beta로 변경 될 것입니다.) 그런 일이 언제 일어날 지 확신하지 못합니다. (나는 곧 말하고 싶지만 아무것도 약속 할 수는 없습니다.)

그래도 사용할 수있는 문자는 a workaround이지만 ... 문자열 배열을 처리한다는 점에 유의하십시오. 추가 복잡성 수준입니다.

두 번째 질문은 데이터베이스가 어떻게 보이는지 (이름이 혼란 스럽지만 지금은 집중력이 부족함) 머리를 쓰려고 고심하는 것이므로 지금 당장이 문제를 해결해 보겠습니다.

+0

@pat Ths your answare! 데이터베이스에 대해서는 다음 플러그인을 참조하십시오 : https://github.com/xpepermint/acts_as_followable. 모델이 복사됩니다 (두 번째 질문 용). – xpepermint

+0

@pat 또한 첫 번째 질문에는 "CRC32 (follows.followable_type)"이 있어야합니다. : as :> : followable_type, : type => : integer "인덱스 정의가 올바 릅니까? 작동 안함. – xpepermint

+1

': type => : multi'를 시도하십시오 - 정수의 배열을 다루고 있습니다. 그리고 필터는': with = = {{followable_type => 'AAA'.to_crc32}'이어야합니다. – pat