diff options
author | Ernie Miller <ernie@metautonomo.us> | 2010-03-24 16:22:15 -0400 |
---|---|---|
committer | Ernie Miller <ernie@metautonomo.us> | 2010-05-07 13:04:42 -0400 |
commit | def75c7b54ccc18f3a8daf79b6144ddcb538d4e8 (patch) | |
tree | 7aaa63607fa9db942c7dd0a1fe32c2aa4650a118 /lib/arel/engines/sql | |
parent | 7aff5ac78e874fa999b7edae26f5031dac017a6e (diff) | |
download | rails-def75c7b54ccc18f3a8daf79b6144ddcb538d4e8.tar.gz rails-def75c7b54ccc18f3a8daf79b6144ddcb538d4e8.tar.bz2 rails-def75c7b54ccc18f3a8daf79b6144ddcb538d4e8.zip |
Added NotMatch and NotIn predicates, made Not derive from Equality (reverted later)
Diffstat (limited to 'lib/arel/engines/sql')
-rw-r--r-- | lib/arel/engines/sql/core_extensions/array.rb | 4 | ||||
-rw-r--r-- | lib/arel/engines/sql/core_extensions/range.rb | 4 | ||||
-rw-r--r-- | lib/arel/engines/sql/predicates.rb | 8 | ||||
-rw-r--r-- | lib/arel/engines/sql/relations/relation.rb | 4 |
4 files changed, 20 insertions, 0 deletions
diff --git a/lib/arel/engines/sql/core_extensions/array.rb b/lib/arel/engines/sql/core_extensions/array.rb index 72f579b7eb..412479dc83 100644 --- a/lib/arel/engines/sql/core_extensions/array.rb +++ b/lib/arel/engines/sql/core_extensions/array.rb @@ -12,6 +12,10 @@ module Arel def inclusion_predicate_sql "IN" end + + def exclusion_predicate_sql + "NOT IN" + end Array.send(:include, self) end diff --git a/lib/arel/engines/sql/core_extensions/range.rb b/lib/arel/engines/sql/core_extensions/range.rb index 46124f8865..b5b1534e48 100644 --- a/lib/arel/engines/sql/core_extensions/range.rb +++ b/lib/arel/engines/sql/core_extensions/range.rb @@ -8,6 +8,10 @@ module Arel def inclusion_predicate_sql "BETWEEN" end + + def exclusion_predicate_sql + "NOT BETWEEN" + end Range.send(:include, self) end diff --git a/lib/arel/engines/sql/predicates.rb b/lib/arel/engines/sql/predicates.rb index e40240eec5..e9a068fb13 100644 --- a/lib/arel/engines/sql/predicates.rb +++ b/lib/arel/engines/sql/predicates.rb @@ -51,9 +51,17 @@ module Arel class Match < Binary def predicate_sql; 'LIKE' end end + + class NotMatch < Binary + def predicate_sql; 'NOT LIKE' end + end class In < Binary def predicate_sql; operand2.inclusion_predicate_sql end end + + class NotIn < Binary + def predicate_sql; operand2.exclusion_predicate_sql end + end end end diff --git a/lib/arel/engines/sql/relations/relation.rb b/lib/arel/engines/sql/relations/relation.rb index f372589af1..fc353fe0c8 100644 --- a/lib/arel/engines/sql/relations/relation.rb +++ b/lib/arel/engines/sql/relations/relation.rb @@ -21,6 +21,10 @@ module Arel def inclusion_predicate_sql "IN" end + + def exclusion_predicate_sql + "NOT IN" + end def primary_key connection_id = engine.connection.object_id |