2009-11-03 103 views
6

我在版本2.3.5中使用'binarylogic-searchlogic'gem和Rails 2.3.4。Rails:searchlogic搜索條件或條件

我想要做的是在模型上搜索多個屬性上的指定值。我通過鏈接一切實現這一共同喜歡

User.first_name_or_last_name_or_email_like(value) 

但隨着這種越來越多的屬性進行搜索這往往是醜陋的。相反,我想使用searchlogic的搜索機制是這樣的:

search = User.search 
search.first_name_like = value 
search.last_name_like = value 
.. 
@users = search.all 

因此,這是通過搜索方式 - 但我要的是OR。我已經找到了兩種方法來實現這一目標,但都無效。

一日一:前面加上一個or_的條件

search = User.search 
search.first_name_like = value 
search.or_last_name_like = value 
@users = search.all 

這給了我The or_last_name_like is not a valid condition. You may only use conditions that map to a named scope

:第二個:使用search.any

search = User.search 
search.first_name_like = value 
search.last_name_like = value 
@users = search.any 

給我undefined method任何」的#`。

有什麼想法嗎?我是否理解自述文的正確的一點?

非常感謝您的幫助!

編輯:時間有些難看的解決方法:

search = User.search 
search.first_name_like = value 
search.last_name_like = value 
User.find(:all, :conditions => search.scope(:find).gsub('AND','OR')) 

作品,但肯定不是要走的路,不是嗎?

回答

2

我不認爲有另一種方式來做到這一點。默認情況下,它將使用AND來加入參數。

代碼,似乎只能用於鏈接。

+0

+1快速查看後,我同意這個答案。爲了確認,你可以詢問Searchlogic郵件列表。 – 2009-11-08 18:35:41