2

如何鏈接metasearchs的搜索方法?連鎖meta_search結果

@result = User.search(params[:search]).search(params[:filters]) 

我們可以在ActiveRecord的調用鏈方法類似

User.active.male.where(age: 14..20) 

它的鏈接有可能在元搜索的結果?

回答

3

我得到它的工作..如果你有同樣的問題,你可以嘗試下面。

meta_search的搜索方法返回MetaSearch::Search::ModelName其中ModelName是您的模型的名稱。 Meta_search爲此對象提供了一種方法relation。您可以撥打relation方法獲取ActiveRecord::Relation對象,然後您可以再次在該對象上調用搜索方法。看到下面的代碼,看看我在說什麼。

@result = User.search(params[:search]) 
@search = @result.relation.search(params[:filters]) 

這裏@resultMetaSearch::Search::User的實例,這樣我們就可以調用relation方法得到的ActiveRecord::Relation

@result.relation 

一個實例,然後我們就可以在這種情況下再次調用搜索方法。即

@result.relation.search(params[:filters]) 
2

怎麼樣在一個搜索去

@result = User.search params[:search].merge(params[:filters]) 
+0

它不能一氣呵成完成。 params [:search]有一個鍵「user_notes_note_name_equals」 params [:filters]也有一個鍵「user_notes_Note_name_equals」 但兩者都有不同的值來搜索。所以,如果我們合併它們,那麼只有一個鍵「user_notes_note_name_equals」和最新的賦值,因爲兩個鍵都是相同的。之前的值將被覆蓋。 – 2012-08-10 11:33:30

+1

哦,那麼你的搜索結果應該是空的,它會一直返回空結果。一個note_name可以有兩個名字嗎?至於據我瞭解,meta_search生成的查詢將像「選擇*表單用戶(加入這裏)WHERE user_notes.name ='等等'和user_notes.name ='等等2'。你確定你有兩個同名的鍵不是用於命令的第二個鍵嗎? – Naveed 2012-08-10 12:06:54