2013-06-06 2 views
1

내 모델의 흑점 '검색 가능'메소드 내에 조건부 색인 일부 데이터를 추가하고 싶습니다. 이상적으로 다음과 같이 보일 것입니다 :태양 흑점 레일을 사용하면 특정 필드를 조건부로 인덱싱 할 수 있습니까?

searchable do 
    string :important_text 
    if address_visible? 
     string :address 
    end 
end 

위 예제에서 address_visible? 메서드 (모델에서)가 true를 반환합니다. 불행하게도, address_visible? 메소드는 컨텍스트가 이제 모델이 아닌 Sunspot :: DSL :: Fields이므로 'NoMethodError'를 발생시킵니다.

답변

2

나는 당신이 실제로 원하는대로 정확하게 할 수 있다고 생각하지 않습니다. 그럼에도 주소를 볼 수없는 경우 주소에 대해 다른 값을 색인 할 수 있습니다. 예 :

searchable do 
    string :important_text 
    string :address { |model| model.address_visible? ? model.address : '' } 
end 
+0

감사합니다. 내 솔루션이 건전하다는 외부 검증을받는 것이 좋습니다. – Ivar