Поиск каждого слова в форме ввода - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь разбить каждое слово во входе и использовать в нем свой поисковый запрос.

Мой текущий поиск использует в моем контроллере следующее:

@stock_search = StockItem.search(params[:search]) .select("stock_items.id,stock_items.product_code, stock_items.desc1, stock_items.cost_sop, stock_items.price, stock_items.price1, stock_items.price2, stock_items.price3, stock_items.price4, stock_items.price5, stock_items.del_price, stock_items.del_price1, stock_items.del_price2, stock_items.del_price3, stock_items.del_price4, stock_items.del_price5, stock_items.qty_free, suppliers.name, max(a.date_invoice) as date_last") .joins("INNER JOIN suppliers ON supplierscompany = stock_items.company and stock_items.main_supplier = suppliers.supplier_code") .joins("LEFT outer JOIN invoice_details a ON stock_items.company = a.company and stock_items.product_code = a.part and a.del_account = '#{@customer.account}'") .where("stock_items.depot = '#{@customer.depot}'") .group("stock_items.id,stock_items.product_code, stock_items.desc1, stock_items.cost_sop, stock_items.price, stock_items.price1, stock_items.price2, stock_items.price3, stock_items.price4, stock_items.price5, stock_items.del_price, stock_items.del_price1, stock_items.del_price2, stock_items.del_price3, stock_items.del_price4, stock_items.del_price5, stock_items.qty_free, suppliers.name") .page(params[:page]).per(10)

и моя модель использует следующее

def self.search(search) if search where('stock_items.depot = ? and (lower(product_code) like lower(?) OR lower(desc1) like lower(?) or lower(main_mpn) like lower(?) or lower(search_keywords) like lower(?))',"01", "%#{search.downcase}%","%#{search.downcase}%","%#{search.downcase}%", "%#{search.downcase}%") else where('product_code=?','x') end end

Я пытаюсь изменить свою модель так, чтобы она перебирала каждое слово в моей форме поиска и создавала строку где, но я не могупохоже, что он не работает, вместо этого кажется (в журнале разработчиков) выполнять отдельные запросы для каждого слова, но затем не возвращать результатов в представлении.

Вот что у меня есть

def self.search(search) if search str = "" search.split.each do |s| a = where("(lower(product_code) like lower(?) OR lower(desc1) like lower(?) or lower(main_mpn) like lower(?) or lower(search_keywords) like lower(?))", "%#{s}%", "%#{s}%", "%#{s}%", "%#{s}%") str = (str + a) end return str else where('product_code=?','x') end end

Буду признателен за любую помощь в правильном направлении.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...