2016-03-31 13 views
2

Eventモデルと、イベント検索を行うクラスSearchEngineがあります。2つのactiverecordクエリを結合する方法は?

SearchEnginesearchの方法を有する。

私はこのようなevent_scopeを渡すことができるようにしたいと思い
class SearchEngine 
    def search(event_scope) 
    return Event.all if event_scope.nil? 
    //event_scope combined with Event.where('name = ?','test') 
    end 
end 

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