Логика поиска ИЛИ условие приводит к неопределенному методу

#ruby-on-rails #searchlogic

#ruby-on-rails #searchlogic

Вопрос:

Я уверен, что я что-то упускаю из виду, поскольку я впервые использую Searchlogic.

Всякий раз, когда я использую инструкцию типа Listing.city_like_or_state_like(params[:search]) в своем контроллере, Rails возвращает ошибку «Неопределенный метод». Я пытаюсь выполнить поиск по 2 полям в одной модели.

Однако, если я использую Listing.city_like(params[:search]) , все в полном порядке.

Я что-то здесь упускаю? Я думал, что OR условия могут быть объединены в цепочку с Searchlogic. Как я могу реализовать оператор OR?

Ответ №1:

Searchlogic поддерживает только один «оператор» для каждого вызова. Итак, что вы хотите сделать, это

 Listing.city_or_state_like(params[:search])
  

Ответ №2:

Я думаю, вы можете использовать named_scopes и передать параметры прямо в SearchLogic

модели/listing.rb

 class Listing < ActiveRecord::Base
    named_scope :city_or_state_like, lambda{|*args| {
                 :conditions => ["city ILIKE ? OR state ILIKE ?", args[0], args[1] ]
                  }
                }

end
  

контроллеры/listing_controller.rb

 #params for [:search][:city_or_state_like] = [city_var][state_var]
    Listing.search(params[:search])
  

Я все же голосую за ответ Анобла: D