2016-03-31 84 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