Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
71803320
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
71803320
编写于
8月 13, 2010
作者:
A
Aaron Patterson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
inserts are starting to take shape
上级
b1e7bd7d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
54 addition
and
3 deletion
+54
-3
lib/arel/insert_manager.rb
lib/arel/insert_manager.rb
+3
-0
lib/arel/visitors/to_sql.rb
lib/arel/visitors/to_sql.rb
+10
-1
spec/arel/insert_manager.rb
spec/arel/insert_manager.rb
+41
-2
未找到文件。
lib/arel/insert_manager.rb
浏览文件 @
71803320
...
@@ -9,5 +9,8 @@ def into table
...
@@ -9,5 +9,8 @@ def into table
@head
.
relation
=
table
@head
.
relation
=
table
self
self
end
end
def
columns
;
@head
.
columns
end
def
values
;
@head
.
values
end
end
end
end
end
lib/arel/visitors/to_sql.rb
浏览文件 @
71803320
...
@@ -13,7 +13,11 @@ def accept object
...
@@ -13,7 +13,11 @@ def accept object
private
private
def
visit_Arel_Nodes_InsertStatement
o
def
visit_Arel_Nodes_InsertStatement
o
"INSERT INTO
#{
visit
o
.
relation
}
"
[
"INSERT INTO
#{
visit
o
.
relation
}
"
,
(
"(
#{
o
.
columns
.
map
{
|
x
|
visit
x
}
.join ', '})"
unless
o
.
columns
.
empty?
),
(
"VALUES (
#{
o
.
values
.
map
{
|
x
|
quote
visit
x
}
.join ', '})"
unless
o
.
values
.
empty?
),
].
compact
.
join
' '
end
end
def
visit_Arel_Nodes_SelectStatement
o
def
visit_Arel_Nodes_SelectStatement
o
...
@@ -42,6 +46,7 @@ def visit_Arel_Nodes_Equality o
...
@@ -42,6 +46,7 @@ def visit_Arel_Nodes_Equality o
def
visit_Arel_Attributes_Integer
o
def
visit_Arel_Attributes_Integer
o
"
#{
quote_table_name
o
.
relation
.
name
}
.
#{
quote_column_name
o
.
name
}
"
"
#{
quote_table_name
o
.
relation
.
name
}
.
#{
quote_column_name
o
.
name
}
"
end
end
alias
:visit_Arel_Attributes_String
:visit_Arel_Attributes_Integer
def
visit_Fixnum
o
;
o
end
def
visit_Fixnum
o
;
o
end
alias
:visit_String
:visit_Fixnum
alias
:visit_String
:visit_Fixnum
...
@@ -61,6 +66,10 @@ def visit object
...
@@ -61,6 +66,10 @@ def visit object
DISPATCH
[
const
]
=
method
DISPATCH
[
const
]
=
method
end
end
def
quote
value
,
column
=
nil
@connection
.
quote
value
,
column
end
def
quote_table_name
name
def
quote_table_name
name
@connection
.
quote_table_name
name
@connection
.
quote_table_name
name
end
end
...
...
spec/arel/insert_manager.rb
浏览文件 @
71803320
...
@@ -13,9 +13,7 @@ module Arel
...
@@ -13,9 +13,7 @@ module Arel
manager
=
Arel
::
InsertManager
.
new
Table
.
engine
manager
=
Arel
::
InsertManager
.
new
Table
.
engine
manager
.
into
(
Table
.
new
(
:users
)).
should
==
manager
manager
.
into
(
Table
.
new
(
:users
)).
should
==
manager
end
end
end
describe
'to_sql'
do
it
'converts to sql'
do
it
'converts to sql'
do
table
=
Table
.
new
:users
table
=
Table
.
new
:users
manager
=
Arel
::
InsertManager
.
new
Table
.
engine
manager
=
Arel
::
InsertManager
.
new
Table
.
engine
...
@@ -25,5 +23,46 @@ module Arel
...
@@ -25,5 +23,46 @@ module Arel
}
}
end
end
end
end
describe
'columns'
do
it
"converts to sql"
do
table
=
Table
.
new
:users
manager
=
Arel
::
InsertManager
.
new
Table
.
engine
manager
.
into
table
manager
.
columns
<<
table
[
:id
]
manager
.
to_sql
.
should
be_like
%{
INSERT INTO "users" ("users"."id")
}
end
end
describe
"values"
do
it
"converts to sql"
do
table
=
Table
.
new
:users
manager
=
Arel
::
InsertManager
.
new
Table
.
engine
manager
.
into
table
manager
.
values
<<
1
manager
.
to_sql
.
should
be_like
%{
INSERT INTO "users" VALUES (1)
}
end
end
describe
"combo"
do
it
"puts shit together"
do
table
=
Table
.
new
:users
manager
=
Arel
::
InsertManager
.
new
Table
.
engine
manager
.
into
table
manager
.
values
<<
1
manager
.
values
<<
"aaron"
manager
.
columns
<<
table
[
:id
]
manager
.
columns
<<
table
[
:name
]
manager
.
to_sql
.
should
be_like
%{
INSERT INTO "users" ("users"."id", "users"."name") VALUES (1, 'aaron')
}
end
end
end
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录