2013-10-09 49 views
0

要容易搜索所有相關的模型屬性之前,這仍然問題問 :太陽黑子資料,匹配搜索相關模型屬性導致

剖面模型

has_one :match 

searchable do 
    integer  :id 
    string  :country 
    string  :state 
    string  :city 
end 

匹配模式

belongs_to :profile 

searchable do 
    integer :id 
    string :looking_for_education do 
    match.looking_for_education 
    end  
    integer :age_from 
    integer :age_to 
end 

Pr ofilesController#指數

def index 

    @search = Sunspot.search Profile do 

    with(:country, params[:country]) # this is a profile attribute 
    with(:state, params[:state]) # this is a profile attribute 
    with(:looking_for_education, "high school") # this should search *inside* 
               #the match attribute's, 
               #where **match** belongs_to 
               #**profile** 
    end 

    @profiles = @search.results 

end 

編輯#1

改寫了搜索塊像與第一個答案建議:looking_for_education做塊。仍未有未定義的方法`looking_for」爲#

新增整數ID來索引還是同樣的問題:(

回答

0

解決方案:

我終於發現了問題,我在開發數據庫的人不得不在那裏檔案不具有匹配的一些問題。 +在修復reindex後,匹配表中的一些缺少profile_id。

1

的問題是,你想一次在兩臺ProfileMatch搜索,但該模型被索引作爲單獨的文件和Sunspot.search Profile do只搜索Profile文件。

您需要configure the documents包含您在一個文件。需要一種方式來做到這一點,可以使包含所有的Profile是文檔的所有信息信息:

class Profile 
    has_one :match 

    searchable do 
    string :country 
    string :state 
    string :city 
    string :looking_for_education do 
     match.looking_for_education 
    end 
    end 
+0

self.match.looking_for_education,Match.looking_for_education和您的建議都會導致未定義的方法'looking_for_education'爲nil:NilClass。 – Rubytastic