diff options
Diffstat (limited to 'lib/arel')
-rw-r--r-- | lib/arel/algebra/relations/operations/where.rb | 9 | ||||
-rw-r--r-- | lib/arel/session.rb | 4 |
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/arel/algebra/relations/operations/where.rb b/lib/arel/algebra/relations/operations/where.rb index 608aaeb4b7..2fc51c7f24 100644 --- a/lib/arel/algebra/relations/operations/where.rb +++ b/lib/arel/algebra/relations/operations/where.rb @@ -9,6 +9,15 @@ module Arel @predicate = predicate.bind(@relation) end + def engine + # Temporary check of whether or not the engine supports where. + if relation.engine.respond_to?(:supports) && !relation.engine.supports(:where) + Memory::Engine.new + else + relation.engine + end + end + def wheres @wheres ||= (relation.wheres + [predicate]).collect { |p| p.bind(self) } end diff --git a/lib/arel/session.rb b/lib/arel/session.rb index d844cd7423..c7fcc53a3b 100644 --- a/lib/arel/session.rb +++ b/lib/arel/session.rb @@ -11,13 +11,13 @@ module Arel begin @started = true @instance = manufacture - metaclass.class_eval do + singleton_class.class_eval do undef :new alias_method :new, :instance end yield ensure - metaclass.class_eval do + singleton_class.class_eval do undef :new alias_method :new, :manufacture end |