2016-03-31 82 views
2

可以說我們有Event模型和SearchEngine類,它對事件執行搜索。如何結合兩個activerecord查詢?

SearchEnginesearch方法。

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