提交 6032d40c 编写于 作者: A Aaron Patterson

added greater than or equal to node

上级 e7648f26
......@@ -24,6 +24,10 @@ def maximum
def average
Nodes::Avg.new [self], Nodes::SqlLiteral.new('avg_id')
end
def gteq right
Nodes::GreaterThanOrEqual.new self, right
end
end
class String < Attribute; end
......
......@@ -2,6 +2,7 @@
require 'arel/nodes/equality'
require 'arel/nodes/or'
require 'arel/nodes/and'
require 'arel/nodes/greater_than_or_equal'
require 'arel/nodes/in'
require 'arel/nodes/lock'
......
module Arel
module Nodes
class GreaterThanOrEqual < Arel::Nodes::Binary
end
end
end
......@@ -109,6 +109,10 @@ def visit_Arel_Nodes_TableAlias o
"#{visit o.relation} #{quote_table_name o.name}"
end
def visit_Arel_Nodes_GreaterThanOrEqual o
"#{visit o.left} >= #{visit o.right}"
end
def visit_Arel_Nodes_StringJoin o
"#{visit o.left} #{visit o.right}"
end
......
......@@ -3,6 +3,22 @@
module Arel
module Attributes
describe 'attribute' do
describe '#gteq' do
it 'should create a GreaterThanOrEqual node' do
relation = Table.new(:users)
relation[:id].gteq(10).should be_kind_of Nodes::GreaterThanOrEqual
end
it 'should generate >= in sql' do
relation = Table.new(:users)
mgr = relation.project relation[:id]
mgr.where relation[:id].gteq(10)
mgr.to_sql.should be_like %{
SELECT "users"."id" FROM "users" WHERE "users"."id" >= 10
}
end
end
describe '#average' do
it 'should create a AVG node' do
relation = Table.new(:users)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册