如何鏈接metasearchs的搜索方法?連鎖meta_search結果
@result = User.search(params[:search]).search(params[:filters])
我們可以在ActiveRecord的調用鏈方法類似
User.active.male.where(age: 14..20)
它的鏈接有可能在元搜索的結果?
如何鏈接metasearchs的搜索方法?連鎖meta_search結果
@result = User.search(params[:search]).search(params[:filters])
我們可以在ActiveRecord的調用鏈方法類似
User.active.male.where(age: 14..20)
它的鏈接有可能在元搜索的結果?
我得到它的工作..如果你有同樣的問題,你可以嘗試下面。
meta_search
的搜索方法返回MetaSearch::Search::ModelName
其中ModelName
是您的模型的名稱。 Meta_search爲此對象提供了一種方法relation
。您可以撥打relation
方法獲取ActiveRecord::Relation
對象,然後您可以再次在該對象上調用搜索方法。看到下面的代碼,看看我在說什麼。
@result = User.search(params[:search])
@search = @result.relation.search(params[:filters])
這裏@result
是MetaSearch::Search::User
的實例,這樣我們就可以調用relation
方法得到的ActiveRecord::Relation
即
@result.relation
一個實例,然後我們就可以在這種情況下再次調用搜索方法。即
@result.relation.search(params[:filters])
怎麼樣在一個搜索去
@result = User.search params[:search].merge(params[:filters])
它不能一氣呵成完成。 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
哦,那麼你的搜索結果應該是空的,它會一直返回空結果。一個note_name可以有兩個名字嗎?至於據我瞭解,meta_search生成的查詢將像「選擇*表單用戶(加入這裏)WHERE user_notes.name ='等等'和user_notes.name ='等等2'。你確定你有兩個同名的鍵不是用於命令的第二個鍵嗎? – Naveed 2012-08-10 12:06:54