2016-03-31 6 views
2

Допустим, у нас есть модель Event и класс SearchEngine, который выполняет поиск по событиям.Как объединить два запроса activerecord?

SearchEngine имеет search способ.

class SearchEngine 
    def search(event_scope) 
    return Event.all if event_scope.nil? 
    //event_scope combined with Event.where('name = ?','test') 
    end 
end 

Я хотел бы быть в состоянии пройти event_scope так:

SearchEngine.new.search(Event.where('start_time > ?',Time.now)) 

И результат будет таким же, как:

Event.where('start_time > ?',Time.now).where('name = ?','test') 

Как я могу это сделать?

+1

Почему бы не просто поставить этот запрос в поиске? Зачем беспокоиться об объеме? – toddmetheny

ответ

4

Прицелы обеспечивают merge method слиться с другой области, так что это должно работать:

class SearchEngine 
    def search(event_scope) 
    return Event.all if event_scope.nil? 
    Event.where('name = ?','test').merge(event_scope) 
    end 
end 
Смежные вопросы