mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fix in [] to be false, in [] to be true
This is in response to discussion on 62207fa
This commit is contained in:
parent
62207faee9
commit
cbff1bcf38
2 changed files with 14 additions and 10 deletions
|
@ -370,11 +370,19 @@ key on UpdateManager using UpdateManager#key=
|
|||
end
|
||||
|
||||
def visit_Arel_Nodes_In o
|
||||
"#{visit o.left} IN (#{visit o.right})"
|
||||
if Array === o.right && o.right.empty?
|
||||
'1=0'
|
||||
else
|
||||
"#{visit o.left} IN (#{visit o.right})"
|
||||
end
|
||||
end
|
||||
|
||||
def visit_Arel_Nodes_NotIn o
|
||||
"#{visit o.left} NOT IN (#{visit o.right})"
|
||||
if Array === o.right && o.right.empty?
|
||||
'1=1'
|
||||
else
|
||||
"#{visit o.left} NOT IN (#{visit o.right})"
|
||||
end
|
||||
end
|
||||
|
||||
def visit_Arel_Nodes_And o
|
||||
|
|
|
@ -167,11 +167,9 @@ module Arel
|
|||
}
|
||||
end
|
||||
|
||||
it "should return IN () when empty right which is invalid SQL" do
|
||||
it "should return 1=0 when empty right which is always false" do
|
||||
node = @attr.in []
|
||||
@visitor.accept(node).must_be_like %{
|
||||
"users"."id" IN ()
|
||||
}
|
||||
@visitor.accept(node).must_equal '1=0'
|
||||
end
|
||||
|
||||
it 'can handle two dot ranges' do
|
||||
|
@ -255,11 +253,9 @@ module Arel
|
|||
}
|
||||
end
|
||||
|
||||
it "should return NOT IN () when empty right which is invalid SQL" do
|
||||
it "should return 1=1 when empty right which is always true" do
|
||||
node = @attr.not_in []
|
||||
@visitor.accept(node).must_be_like %{
|
||||
"users"."id" NOT IN ()
|
||||
}
|
||||
@visitor.accept(node).must_equal '1=1'
|
||||
end
|
||||
|
||||
it 'can handle two dot ranges' do
|
||||
|
|
Loading…
Reference in a new issue