[英]Case-insensitive advanced search in Rails model
如何將第一個示例結果應用於第二個示例?
1)Rails模型中不區分大小寫的搜索結果
self.where("LOWER(shop_name) like ?", "%#{search.downcase}%")
2)高級搜索
shops =Shop.where("shop_name LIKE '%#{keywords}%' AND shop_city LIKE '%#{keywords2}%' AND shop_country LIKE '%#{keywords3}%' AND market_type LIKE '%#{keywords4}%'") if keywords||keywords2||keywords3||keywords4.present?
我解決這個
shops =Shop.where("LOWER(shop_name) LIKE '%#{keywords.downcase}%' AND LOWER(shop_city) LIKE '%#{keywords2.downcase}%' AND LOWER(shop_country) LIKE '%#{keywords3.downcase}%' AND LOWER(market_type) LIKE '%#{keywords4.downcase}%'") if keywords.downcase||keywords2.downcase||keywords3.downcase||keywords4.downcase.present?
請告訴我這是對是錯
為避免錯誤,請在和中2)替換||。 由&&
shops =Shop.where("shop_name LIKE '%#{keywords}%' AND shop_city LIKE '%#{keywords2}%' AND shop_country LIKE '%#{keywords3}%' AND market_type LIKE '%#{keywords4}%'") if keywords && keywords2 && keywords3 && keywords4
您可能已經知道或需要知道此請求的處理速度將非常慢
我拆分了您的代碼以確保您真正想要的是
query = ''
query << 'LOWER(shop_name) LIKE :keywords '
query << 'AND LOWER(shop_city) LIKE :keywords2 '
query << 'AND LOWER(shop_country) LIKE :keywords3 '
query << 'AND LOWER(market_type) LIKE :keywords4'
shops = Shop.where(
query,
keywords: keywords.downcase || '',
keywords2: keywords2.downcase || '',
keywords3: keywords3.downcase || '',
keywords4: keywords4.downcase || '',
) unless keywords.blank? && keyword2.blank? && keywords3.blank? && keywords4.blank?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.