2011-09-08 65 views
0

我已經在我的模型下面的搜索用戶輸入的字符串:如何解決這個搜索方法

def self.find_products(product="") 

    find(:all, :select => 'product_id, name', :order => "name", :conditions => ["name like ? and locale =?", "%#{product.capitalize}%", I18n.locale]) 
    end 

但它只能如果字符串是一個詞。 如果字符串包含兩個或更多單詞(如「卡片指南」),則即使這些單詞是名稱中的確切單詞,它也不會返回任何內容。

如何正確執行此搜索。

的Rails的Ruby 3 1.9.2

更新

事實證明,它的一個PostgreSQL語法。我需要使用iLIKE來區分大小寫。然後它運作得更好。我仍然喜歡下面的答案,因爲它也有助於完善我的語法。

回答

1

嘿,我也在礦山項目中使用這種類型的搜索邏輯,我這樣做了。如果您想嘗試再看看它是否可能幫助你 - :

class << self 
    def search(query) 
    product = "%#{query}%" 
    where("name LIKE ? AND locale =?", product,I18n.locale) 
    end 
end 

感謝

+0

謝謝Vivek幫助了很多 – chell

0

我注意到你正在使用大寫。您確定產品名稱的格式與您存儲數據的方式完全相同嗎?難道是代碼返回「卡導遊」,但你的數據預計「卡導遊」?