2010-06-21 67 views
0

我有以下問題:使用searchlogic用的habtm協會

我在我的Rails應用程序兩班,由HABTM協會加入,就像這樣:

#ad.rb 
has_and_belongs_to_many :specs 
#spec.rb 
has_and_belongs_to_many :ads 

由ads​​_specs表連接。 我正在嘗試使用卓越的searchlogic gem對Ad類進行搜索。一切都很順利,直到我想返回所有選定規格的廣告,而不是其中任何一個。

我試過@ads = Ad.specs_id_like_all(id1, id2, id3),但沒有結果,因爲我認爲它試圖匹配id爲「id1,id2,id3」的規範。我也嘗試過。拆分ID或直接在數組中輸入,但沒有任何工作。

我確切的搜索查詢是:

if params[:search] 
    @ads = Ad.search(:price_lte => params[:search][:price], 
        :rulaj_lte => params[:search][:rulaj], 
        :fabrication_date_gte => Date.new(params[:search][:"an_fabr(1i)"].to_i,"01".to_i,"01".to_i)).specs_id_like_all(2, 457, 233) 

else 
    @ads = Ad.all 
end 

難道你們有什麼想法,我怎麼能解決這個問題?我發誓,這是我最後一次在Rails應用程序中使用HABTM關聯,但是在開發過程的最後階段,我們很晚纔開始轉向多態關係:)。

回答

0

如果我理解正確的,你想執行一個SQL IN()查詢(即spec_id IN (x,y,z..)

Searchlogic不支持將數組傳遞給一個*_eq()方法將使用SQL的IN()謂詞:

Ad.search(:spec_id_eq => [1,2,3,4]) 

**不確定此功能是否適用於舊版本的Searchlogic *