mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge branch 'brynary'
This commit is contained in:
commit
c69dfd53de
32 changed files with 116 additions and 116 deletions
|
@ -4,4 +4,4 @@ require "arel/algebra/attributes/decimal"
|
|||
require "arel/algebra/attributes/float"
|
||||
require "arel/algebra/attributes/integer"
|
||||
require "arel/algebra/attributes/string"
|
||||
require "arel/algebra/attributes/time"
|
||||
require "arel/algebra/attributes/time"
|
||||
|
|
|
@ -85,119 +85,119 @@ module Arel
|
|||
def eq(other)
|
||||
Predicates::Equality.new(self, other)
|
||||
end
|
||||
|
||||
|
||||
def eq_any(*others)
|
||||
Predicates::Any.build(Predicates::Equality, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def eq_all(*others)
|
||||
Predicates::All.build(Predicates::Equality, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def not_eq(other)
|
||||
Predicates::Inequality.new(self, other)
|
||||
end
|
||||
|
||||
|
||||
def not_eq_any(*others)
|
||||
Predicates::Any.build(Predicates::Inequality, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def not_eq_all(*others)
|
||||
Predicates::All.build(Predicates::Inequality, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def lt(other)
|
||||
Predicates::LessThan.new(self, other)
|
||||
end
|
||||
|
||||
|
||||
def lt_any(*others)
|
||||
Predicates::Any.build(Predicates::LessThan, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def lt_all(*others)
|
||||
Predicates::All.build(Predicates::LessThan, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def lteq(other)
|
||||
Predicates::LessThanOrEqualTo.new(self, other)
|
||||
end
|
||||
|
||||
|
||||
def lteq_any(*others)
|
||||
Predicates::Any.build(Predicates::LessThanOrEqualTo, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def lteq_all(*others)
|
||||
Predicates::All.build(Predicates::LessThanOrEqualTo, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def gt(other)
|
||||
Predicates::GreaterThan.new(self, other)
|
||||
end
|
||||
|
||||
|
||||
def gt_any(*others)
|
||||
Predicates::Any.build(Predicates::GreaterThan, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def gt_all(*others)
|
||||
Predicates::All.build(Predicates::GreaterThan, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def gteq(other)
|
||||
Predicates::GreaterThanOrEqualTo.new(self, other)
|
||||
end
|
||||
|
||||
|
||||
def gteq_any(*others)
|
||||
Predicates::Any.build(Predicates::GreaterThanOrEqualTo, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def gteq_all(*others)
|
||||
Predicates::All.build(Predicates::GreaterThanOrEqualTo, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def matches(other)
|
||||
Predicates::Match.new(self, other)
|
||||
end
|
||||
|
||||
|
||||
def matches_any(*others)
|
||||
Predicates::Any.build(Predicates::Match, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def matches_all(*others)
|
||||
Predicates::All.build(Predicates::Match, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def not_matches(other)
|
||||
Predicates::NotMatch.new(self, other)
|
||||
end
|
||||
|
||||
|
||||
def not_matches_any(*others)
|
||||
Predicates::Any.build(Predicates::NotMatch, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def not_matches_all(*others)
|
||||
Predicates::All.build(Predicates::NotMatch, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def in(other)
|
||||
Predicates::In.new(self, other)
|
||||
end
|
||||
|
||||
|
||||
def in_any(*others)
|
||||
Predicates::Any.build(Predicates::In, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def in_all(*others)
|
||||
Predicates::All.build(Predicates::In, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def not_in(other)
|
||||
Predicates::NotIn.new(self, other)
|
||||
end
|
||||
|
||||
|
||||
def not_in_any(*others)
|
||||
Predicates::Any.build(Predicates::NotIn, self, *others)
|
||||
end
|
||||
|
||||
|
||||
def not_in_all(*others)
|
||||
Predicates::All.build(Predicates::NotIn, self, *others)
|
||||
end
|
||||
|
|
|
@ -7,4 +7,4 @@ module Arel
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -64,4 +64,4 @@ module Arel
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,23 +8,23 @@ module Arel
|
|||
def and(other_predicate)
|
||||
And.new(self, other_predicate)
|
||||
end
|
||||
|
||||
|
||||
def complement
|
||||
Not.new(self)
|
||||
end
|
||||
|
||||
|
||||
def not
|
||||
self.complement
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Polyadic < Predicate
|
||||
attributes :predicates
|
||||
|
||||
|
||||
def initialize(*predicates)
|
||||
@predicates = predicates
|
||||
end
|
||||
|
||||
|
||||
# Build a Polyadic predicate based on:
|
||||
# * <tt>operator</tt> - The Predicate subclass that defines the type of operation
|
||||
# (LessThan, Equality, etc)
|
||||
|
@ -37,19 +37,19 @@ module Arel
|
|||
end
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
def ==(other)
|
||||
same_elements?(@predicates, other.predicates)
|
||||
end
|
||||
|
||||
|
||||
def bind(relation)
|
||||
self.class.new(
|
||||
*predicates.map {|p| p.find_correlate_in(relation)}
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
private
|
||||
|
||||
|
||||
def same_elements?(a1, a2)
|
||||
[:select, :inject, :size].each do |m|
|
||||
return false unless [a1, a2].each {|a| a.respond_to?(m) }
|
||||
|
@ -58,28 +58,28 @@ module Arel
|
|||
a2.inject({}) { |h,e| h[e] = a2.select { |i| i == e }.size; h }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Any < Polyadic
|
||||
def complement
|
||||
All.new(*predicates.map {|p| p.complement})
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class All < Polyadic
|
||||
def complement
|
||||
Any.new(*predicates.map {|p| p.complement})
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Unary < Predicate
|
||||
attributes :operand
|
||||
deriving :initialize, :==
|
||||
|
||||
|
||||
def bind(relation)
|
||||
self.class.new(operand.find_correlate_in(relation))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Not < Unary
|
||||
def complement
|
||||
operand
|
||||
|
@ -100,7 +100,7 @@ module Arel
|
|||
self.class.new(operand1.find_correlate_in(relation), operand2.find_correlate_in(relation))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class CompoundPredicate < Binary; end
|
||||
|
||||
class And < CompoundPredicate
|
||||
|
@ -108,7 +108,7 @@ module Arel
|
|||
Or.new(operand1.complement, operand2.complement)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Or < CompoundPredicate
|
||||
def complement
|
||||
And.new(operand1.complement, operand2.complement)
|
||||
|
@ -121,7 +121,7 @@ module Arel
|
|||
((operand1 == other.operand1 and operand2 == other.operand2) or
|
||||
(operand1 == other.operand2 and operand2 == other.operand1))
|
||||
end
|
||||
|
||||
|
||||
def complement
|
||||
Inequality.new(operand1, operand2)
|
||||
end
|
||||
|
@ -133,54 +133,54 @@ module Arel
|
|||
((operand1 == other.operand1 and operand2 == other.operand2) or
|
||||
(operand1 == other.operand2 and operand2 == other.operand1))
|
||||
end
|
||||
|
||||
|
||||
def complement
|
||||
Equality.new(operand1, operand2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class GreaterThanOrEqualTo < Binary
|
||||
def complement
|
||||
LessThan.new(operand1, operand2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class GreaterThan < Binary
|
||||
def complement
|
||||
LessThanOrEqualTo.new(operand1, operand2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class LessThanOrEqualTo < Binary
|
||||
def complement
|
||||
GreaterThan.new(operand1, operand2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class LessThan < Binary
|
||||
def complement
|
||||
GreaterThanOrEqualTo.new(operand1, operand2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Match < Binary
|
||||
def complement
|
||||
NotMatch.new(operand1, operand2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class NotMatch < Binary
|
||||
def complement
|
||||
Match.new(operand1, operand2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class In < Binary
|
||||
def complement
|
||||
NotIn.new(operand1, operand2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class NotIn < Binary
|
||||
def complement
|
||||
In.new(operand1, operand2)
|
||||
|
|
|
@ -5,19 +5,19 @@ module Arel
|
|||
operand1.eval(row).send(operator, operand2.eval(row))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Unary < Predicate
|
||||
def eval(row)
|
||||
operand.eval(row).send(operator)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Not < Unary
|
||||
def eval(row)
|
||||
!operand.eval(row)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Polyadic < Predicate
|
||||
def eval(row)
|
||||
predicates.send(compounder) do |operation|
|
||||
|
@ -25,15 +25,15 @@ module Arel
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Any < Polyadic
|
||||
def compounder; :any? end
|
||||
end
|
||||
|
||||
|
||||
class All < Polyadic
|
||||
def compounder; :all? end
|
||||
end
|
||||
|
||||
|
||||
class CompoundPredicate < Binary
|
||||
def eval(row)
|
||||
eval "operand1.eval(row) #{operator} operand2.eval(row)"
|
||||
|
@ -77,7 +77,7 @@ module Arel
|
|||
class Match < Binary
|
||||
def operator; :=~ end
|
||||
end
|
||||
|
||||
|
||||
class NotMatch < Binary
|
||||
def eval(row)
|
||||
operand1.eval(row) !~ operand2.eval(row)
|
||||
|
@ -89,7 +89,7 @@ module Arel
|
|||
operand2.eval(row).include?(operand1.eval(row))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class NotIn < Binary
|
||||
def eval(row)
|
||||
!(operand2.eval(row).include?(operand1.eval(row)))
|
||||
|
|
|
@ -37,4 +37,4 @@ module Arel
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -12,7 +12,7 @@ module Arel
|
|||
def inclusion_predicate_sql
|
||||
"IN"
|
||||
end
|
||||
|
||||
|
||||
def exclusion_predicate_sql
|
||||
"NOT IN"
|
||||
end
|
||||
|
|
|
@ -4,7 +4,7 @@ module Arel
|
|||
def equality_predicate_sql
|
||||
'IS'
|
||||
end
|
||||
|
||||
|
||||
def inequality_predicate_sql
|
||||
'IS NOT'
|
||||
end
|
||||
|
|
|
@ -8,7 +8,7 @@ module Arel
|
|||
def equality_predicate_sql
|
||||
'='
|
||||
end
|
||||
|
||||
|
||||
def inequality_predicate_sql
|
||||
'!='
|
||||
end
|
||||
|
|
|
@ -8,7 +8,7 @@ module Arel
|
|||
def inclusion_predicate_sql
|
||||
"BETWEEN"
|
||||
end
|
||||
|
||||
|
||||
def exclusion_predicate_sql
|
||||
"NOT BETWEEN"
|
||||
end
|
||||
|
|
|
@ -5,13 +5,13 @@ module Arel
|
|||
"#{operand1.to_sql} #{predicate_sql} #{operand1.format(operand2)}"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Unary < Predicate
|
||||
def to_sql(formatter = nil)
|
||||
"#{predicate_sql} (#{operand.to_sql(formatter)})"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Not < Unary
|
||||
def predicate_sql; "NOT" end
|
||||
end
|
||||
|
@ -29,19 +29,19 @@ module Arel
|
|||
class And < CompoundPredicate
|
||||
def predicate_sql; "AND" end
|
||||
end
|
||||
|
||||
|
||||
class Polyadic < Predicate
|
||||
def to_sql(formatter = nil)
|
||||
"(" +
|
||||
"(" +
|
||||
predicates.map {|p| p.to_sql(formatter)}.join(" #{predicate_sql} ") +
|
||||
")"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class Any < Polyadic
|
||||
def predicate_sql; "OR" end
|
||||
end
|
||||
|
||||
|
||||
class All < Polyadic
|
||||
def predicate_sql; "AND" end
|
||||
end
|
||||
|
@ -77,7 +77,7 @@ module Arel
|
|||
class Match < Binary
|
||||
def predicate_sql; 'LIKE' end
|
||||
end
|
||||
|
||||
|
||||
class NotMatch < Binary
|
||||
def predicate_sql; 'NOT LIKE' end
|
||||
end
|
||||
|
@ -92,10 +92,10 @@ module Arel
|
|||
super
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def predicate_sql; operand2.inclusion_predicate_sql end
|
||||
end
|
||||
|
||||
|
||||
class NotIn < Binary
|
||||
def predicate_sql; operand2.exclusion_predicate_sql end
|
||||
end
|
||||
|
|
|
@ -29,7 +29,7 @@ module Arel
|
|||
def inclusion_predicate_sql
|
||||
value.inclusion_predicate_sql
|
||||
end
|
||||
|
||||
|
||||
def exclusion_predicate_sql
|
||||
value.exclusion_predicate_sql
|
||||
end
|
||||
|
@ -37,7 +37,7 @@ module Arel
|
|||
def equality_predicate_sql
|
||||
value.equality_predicate_sql
|
||||
end
|
||||
|
||||
|
||||
def inequality_predicate_sql
|
||||
value.inequality_predicate_sql
|
||||
end
|
||||
|
|
|
@ -21,7 +21,7 @@ module Arel
|
|||
def inclusion_predicate_sql
|
||||
"IN"
|
||||
end
|
||||
|
||||
|
||||
def exclusion_predicate_sql
|
||||
"NOT IN"
|
||||
end
|
||||
|
|
|
@ -54,4 +54,4 @@ module Arel
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -116,4 +116,4 @@ module Arel
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -39,4 +39,4 @@ module Arel
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -116,4 +116,4 @@ module Arel
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -40,4 +40,4 @@ module Arel
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -21,4 +21,4 @@ module Arel
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -99,7 +99,7 @@ module Arel
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe 'when relating to a range with an excluded end' do
|
||||
before do
|
||||
@range = 1...3
|
||||
|
|
|
@ -39,4 +39,4 @@ describe "Arel" do
|
|||
|
||||
it_should_behave_like 'A Relation'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -28,4 +28,4 @@ describe "Arel" do
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -44,7 +44,7 @@ share_examples_for 'A Relation' do
|
|||
expected = @expected.select { |r| r[@relation[:age]] != @pivot[@relation[:age]] }
|
||||
@relation.where(@relation[:age].not_eq(@pivot[@relation[:age]])).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with an not eq complement predicate" do
|
||||
expected = @expected.select { |r| r[@relation[:age]] == @pivot[@relation[:age]] }
|
||||
@relation.where(@relation[:age].not_eq(@pivot[@relation[:age]]).complement).should have_rows(expected)
|
||||
|
@ -54,7 +54,7 @@ share_examples_for 'A Relation' do
|
|||
expected = @expected.select { |r| r[@relation[:age]] < @pivot[@relation[:age]] }
|
||||
@relation.where(@relation[:age].lt(@pivot[@relation[:age]])).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a less than complement predicate" do
|
||||
expected = @expected.select { |r| r[@relation[:age]] >= @pivot[@relation[:age]] }
|
||||
@relation.where(@relation[:age].lt(@pivot[@relation[:age]]).complement).should have_rows(expected)
|
||||
|
@ -64,7 +64,7 @@ share_examples_for 'A Relation' do
|
|||
expected = @expected.select { |r| r[@relation[:age]] <= @pivot[@relation[:age]] }
|
||||
@relation.where(@relation[:age].lteq(@pivot[@relation[:age]])).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a less than or equal to complement predicate" do
|
||||
expected = @expected.select { |r| r[@relation[:age]] > @pivot[@relation[:age]] }
|
||||
@relation.where(@relation[:age].lteq(@pivot[@relation[:age]]).complement).should have_rows(expected)
|
||||
|
@ -74,7 +74,7 @@ share_examples_for 'A Relation' do
|
|||
expected = @expected.select { |r| r[@relation[:age]] > @pivot[@relation[:age]] }
|
||||
@relation.where(@relation[:age].gt(@pivot[@relation[:age]])).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a greater than complement predicate" do
|
||||
expected = @expected.select { |r| r[@relation[:age]] <= @pivot[@relation[:age]] }
|
||||
@relation.where(@relation[:age].gt(@pivot[@relation[:age]]).complement).should have_rows(expected)
|
||||
|
@ -84,7 +84,7 @@ share_examples_for 'A Relation' do
|
|||
expected = @expected.select { |r| r[@relation[:age]] >= @pivot[@relation[:age]] }
|
||||
@relation.where(@relation[:age].gteq(@pivot[@relation[:age]])).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a greater than or equal to complement predicate" do
|
||||
expected = @expected.select { |r| r[@relation[:age]] < @pivot[@relation[:age]] }
|
||||
@relation.where(@relation[:age].gteq(@pivot[@relation[:age]]).complement).should have_rows(expected)
|
||||
|
@ -94,17 +94,17 @@ share_examples_for 'A Relation' do
|
|||
expected = @expected.select { |r| r[@relation[:name]] =~ /#{@pivot[@relation[:name]]}/ }
|
||||
@relation.where(@relation[:name].matches(/#{@pivot[@relation[:name]]}/)).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a matches complement predicate" do
|
||||
expected = @expected.select { |r| r[@relation[:name]] !~ /#{@pivot[@relation[:name]]}/ }
|
||||
@relation.where(@relation[:name].matches(/#{@pivot[@relation[:name]]}/).complement).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a not matches predicate" do
|
||||
expected = @expected.select { |r| r[@relation[:name]] !~ /#{@pivot[@relation[:name]]}/ }
|
||||
@relation.where(@relation[:name].not_matches(/#{@pivot[@relation[:name]]}/)).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a not matches complement predicate" do
|
||||
expected = @expected.select { |r| r[@relation[:name]] =~ /#{@pivot[@relation[:name]]}/ }
|
||||
@relation.where(@relation[:name].not_matches(/#{@pivot[@relation[:name]]}/).complement).should have_rows(expected)
|
||||
|
@ -114,37 +114,37 @@ share_examples_for 'A Relation' do
|
|||
expected = @expected.select {|r| r[@relation[:age]] >=3 && r[@relation[:age]] <= 20}
|
||||
@relation.where(@relation[:age].in(3..20)).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with an in complement predicate" do
|
||||
expected = @expected.select {|r| !(r[@relation[:age]] >=3 && r[@relation[:age]] <= 20)}
|
||||
@relation.where(@relation[:age].in(3..20).complement).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a not in predicate" do
|
||||
expected = @expected.select {|r| !(r[@relation[:age]] >=3 && r[@relation[:age]] <= 20)}
|
||||
@relation.where(@relation[:age].not_in(3..20)).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a not in complement predicate" do
|
||||
expected = @expected.select {|r| r[@relation[:age]] >=3 && r[@relation[:age]] <= 20}
|
||||
@relation.where(@relation[:age].not_in(3..20).complement).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a polyadic predicate of class Any" do
|
||||
expected = @expected.select {|r| [2,4,8,16].include?(r[@relation[:age]])}
|
||||
@relation.where(@relation[:age].in_any([2,4], [8, 16])).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a polyadic predicate of class Any complement" do
|
||||
expected = @expected.select {|r| ![2,4,8,16].include?(r[@relation[:age]])}
|
||||
@relation.where(@relation[:age].in_any([2,4], [8, 16]).complement).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a polyadic predicate of class All" do
|
||||
expected = @expected.select {|r| r[@relation[:name]] =~ /Name/ && r[@relation[:name]] =~ /1/}
|
||||
@relation.where(@relation[:name].matches_all(/Name/, /1/)).should have_rows(expected)
|
||||
end
|
||||
|
||||
|
||||
it "finds rows with a polyadic predicate of class All complement" do
|
||||
expected = @expected.select {|r| !(r[@relation[:name]] =~ /Name/ && r[@relation[:name]] =~ /1/)}
|
||||
@relation.where(@relation[:name].matches_all(/Name/, /1/).complement).should have_rows(expected)
|
||||
|
@ -252,4 +252,4 @@ share_examples_for 'A Relation' do
|
|||
actual.should == expected[3..-1]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,4 +3,4 @@ module Check
|
|||
# See: https://rspec.lighthouseapp.com/projects/5645/tickets/504
|
||||
def check(*args)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,4 +11,4 @@ ActiveRecord::Base.configurations = {
|
|||
:encoding => 'utf8',
|
||||
:database => 'arel_unit',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,4 +14,4 @@ ActiveRecord::Base.configurations = {
|
|||
:password => 'arel_unit',
|
||||
:database => 'orcl',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,4 +10,4 @@ ActiveRecord::Base.configurations = {
|
|||
:encoding => 'utf8',
|
||||
:database => 'arel_unit',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,4 +25,4 @@ module AdapterGuards
|
|||
def valid_adapters
|
||||
%w[mysql postgresql sqlite3 oracle]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
require "support/matchers/be_like"
|
||||
require "support/matchers/disambiguate_attributes"
|
||||
require "support/matchers/hash_the_same_as"
|
||||
require "support/matchers/have_rows"
|
||||
require "support/matchers/have_rows"
|
||||
|
|
|
@ -15,4 +15,4 @@ module Matchers
|
|||
found.compact.length == expected.length && got.compact.length == expected.length
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -59,4 +59,4 @@ module Arel
|
|||
insert.record
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue