Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
74a27a0d
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,发现更多精彩内容 >>
提交
74a27a0d
编写于
8月 13, 2010
作者:
A
Aaron Patterson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
inserts have the correct syntax
上级
9fc70e22
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
56 addition
and
9 deletion
+56
-9
lib/arel/select_manager.rb
lib/arel/select_manager.rb
+1
-1
lib/arel/visitors/to_sql.rb
lib/arel/visitors/to_sql.rb
+14
-4
spec/arel/insert_manager_spec.rb
spec/arel/insert_manager_spec.rb
+24
-4
spec/arel/visitors/to_sql_spec.rb
spec/arel/visitors/to_sql_spec.rb
+17
-0
未找到文件。
lib/arel/select_manager.rb
浏览文件 @
74a27a0d
...
...
@@ -30,7 +30,7 @@ def take limit
def
insert
values
im
=
InsertManager
.
new
@engine
im
.
insert
values
raise
@engine
.
connection
.
execute
im
.
to_sql
end
end
end
lib/arel/visitors/to_sql.rb
浏览文件 @
74a27a0d
...
...
@@ -15,8 +15,15 @@ def accept object
def
visit_Arel_Nodes_InsertStatement
o
[
"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?
),
(
"(
#{
o
.
columns
.
map
{
|
x
|
quote_column_name
x
.
name
}
.join ', '})"
unless
o
.
columns
.
empty?
),
(
"VALUES (
#{
o
.
values
.
map
{
|
value
|
value
?
quote
(
visit
(
value
))
:
'NULL'
}
.join ', '})"
unless
o
.
values
.
empty?
),
].
compact
.
join
' '
end
...
...
@@ -43,12 +50,15 @@ def visit_Arel_Nodes_Equality o
"
#{
visit
o
.
left
}
=
#{
visit
o
.
right
}
"
end
def
visit_Arel_Attributes_
Integer
o
def
visit_Arel_Attributes_
Attribute
o
"
#{
quote_table_name
o
.
relation
.
name
}
.
#{
quote_column_name
o
.
name
}
"
end
alias
:visit_Arel_Attributes_String
:visit_Arel_Attributes_Integer
alias
:visit_Arel_Attributes_Integer
:visit_Arel_Attributes_Attribute
alias
:visit_Arel_Attributes_String
:visit_Arel_Attributes_Attribute
alias
:visit_Arel_Attributes_Time
:visit_Arel_Attributes_Attribute
def
visit_Fixnum
o
;
o
end
alias
:visit_Time
:visit_Fixnum
alias
:visit_String
:visit_Fixnum
alias
:visit_Arel_Nodes_SqlLiteral
:visit_Fixnum
alias
:visit_Arel_SqlLiteral
:visit_Fixnum
# This is deprecated
...
...
spec/arel/insert_manager_spec.rb
浏览文件 @
74a27a0d
...
...
@@ -9,13 +9,33 @@ module Arel
end
describe
'insert'
do
it
"inserts null"
do
table
=
Table
.
new
(
:users
)
manager
=
Arel
::
InsertManager
.
new
Table
.
engine
manager
.
insert
[[
table
[
:id
],
nil
]]
manager
.
to_sql
.
should
be_like
%{
INSERT INTO "users" ("id") VALUES (NULL)
}
end
it
"inserts time"
do
table
=
Table
.
new
(
:users
)
manager
=
Arel
::
InsertManager
.
new
Table
.
engine
time
=
Time
.
now
manager
.
insert
[[
table
[
:id
],
time
]]
manager
.
to_sql
.
should
be_like
%{
INSERT INTO "users" ("id") VALUES (#{Table.engine.connection.quote time})
}
end
it
'takes a list of lists'
do
table
=
Table
.
new
(
:users
)
manager
=
Arel
::
InsertManager
.
new
Table
.
engine
manager
.
into
table
manager
.
insert
[[
table
[
:id
],
1
],
[
table
[
:name
],
'aaron'
]]
manager
.
to_sql
.
should
be_like
%{
INSERT INTO "users" ("
users"."id", "users".
"name") VALUES (1, 'aaron')
INSERT INTO "users" ("
id",
"name") VALUES (1, 'aaron')
}
end
...
...
@@ -24,7 +44,7 @@ module Arel
manager
=
Arel
::
InsertManager
.
new
Table
.
engine
manager
.
insert
[[
table
[
:id
],
1
],
[
table
[
:name
],
'aaron'
]]
manager
.
to_sql
.
should
be_like
%{
INSERT INTO "users" ("
users"."id", "users".
"name") VALUES (1, 'aaron')
INSERT INTO "users" ("
id",
"name") VALUES (1, 'aaron')
}
end
...
...
@@ -57,7 +77,7 @@ module Arel
manager
.
into
table
manager
.
columns
<<
table
[
:id
]
manager
.
to_sql
.
should
be_like
%{
INSERT INTO "users" ("
users"."
id")
INSERT INTO "users" ("id")
}
end
end
...
...
@@ -86,7 +106,7 @@ module Arel
manager
.
columns
<<
table
[
:id
]
manager
.
columns
<<
table
[
:name
]
manager
.
to_sql
.
should
be_like
%{
INSERT INTO "users" ("
users"."id", "users".
"name") VALUES (1, 'aaron')
INSERT INTO "users" ("
id",
"name") VALUES (1, 'aaron')
}
end
end
...
...
spec/arel/visitors/to_sql_spec.rb
0 → 100644
浏览文件 @
74a27a0d
require
'spec_helper'
module
Arel
module
Visitors
describe
'the to_sql visitor'
do
before
do
@visitor
=
ToSql
.
new
Table
.
engine
@attr
=
Table
.
new
(
:users
)[
:id
]
end
it
"should visit visit_Arel_Attributes_Time"
do
attr
=
Attributes
::
Time
.
new
(
@attr
.
relation
,
@attr
.
name
,
@attr
.
column
)
@visitor
.
accept
attr
end
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录