2013-03-03 43 views
2

我已經研究過這個問題,但沒有發現任何關係。這就是我決定問的原因。 Stackoverflow對我來說是一個巨大的幫助。陣列類屬性的太陽黑子面選項

我有一個jobs表有一個屬性是位置。每個job.location要麼在紐約,波士頓,要麼兩者都有(紐約&波士頓)。

在rails的sunspot solr中,如何爲此屬性創建方面,以便如果job.location位於兩個城市中,那麼當從中選擇紐約或波士頓時,該作業可以顯示在結果中?如果它像數組['New York', 'Boston']

謝謝!

回答

1

您應該更改設計,以便您有一個單獨的位置類,並將作業類設置爲has_and_belongs_to_many :locations,因爲它是多對多關係。 然後你就可以在位置建立在你的作業類搜索塊的整數範圍:

integer :locations, :multiple => true 

,讓每個作業多個位置。

現在很容易添加一個facet(:locations)這將完全按照您的要求。

上述作品適用於任何數量的地點,而不僅限於兩處。但是,如果您不想創建新的班級/表格,並且確定只有1個或2個位置,則可以創建查詢範圍字段:

integer :locations, :multiple => true do 
    if location == 'NY & Boston' 
    ['NY', 'Boston'] 
    else 
    [location] 
    end 
end