Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
162e1d8d
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,发现更多精彩内容 >>
提交
162e1d8d
编写于
12月 22, 2010
作者:
A
Aaron Patterson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
sql literals may be used as column attributes
上级
a75ed569
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
38 addition
and
23 deletion
+38
-23
History.txt
History.txt
+1
-0
lib/arel.rb
lib/arel.rb
+4
-0
lib/arel/table.rb
lib/arel/table.rb
+1
-1
lib/arel/visitors/to_sql.rb
lib/arel/visitors/to_sql.rb
+24
-21
test/visitors/test_to_sql.rb
test/visitors/test_to_sql.rb
+8
-1
未找到文件。
History.txt
浏览文件 @
162e1d8d
...
...
@@ -4,6 +4,7 @@
* AST is now Enumerable
* AND nodes are now n-ary nodes
* SQL Literals may be used as Attribute names
* Deprecations
...
...
lib/arel.rb
浏览文件 @
162e1d8d
...
...
@@ -35,6 +35,10 @@ module Arel
def
self
.
sql
raw_sql
Arel
::
Nodes
::
SqlLiteral
.
new
raw_sql
end
def
self
.
star
sql
'*'
end
## Convenience Alias
Node
=
Arel
::
Nodes
::
Node
end
lib/arel/table.rb
浏览文件 @
162e1d8d
...
...
@@ -109,7 +109,7 @@ def columns
end
def
[]
name
::
Arel
::
Attribute
.
new
self
,
name
.
to_sym
::
Arel
::
Attribute
.
new
self
,
name
end
def
select_manager
...
...
lib/arel/visitors/to_sql.rb
浏览文件 @
162e1d8d
...
...
@@ -318,26 +318,29 @@ def visit_Arel_Attributes_Attribute o
alias
:visit_Arel_Attributes_Time
:visit_Arel_Attributes_Attribute
alias
:visit_Arel_Attributes_Boolean
:visit_Arel_Attributes_Attribute
def
visit_Fixnum
o
;
o
end
alias
:visit_Arel_Nodes_SqlLiteral
:visit_Fixnum
alias
:visit_Arel_SqlLiteral
:visit_Fixnum
# This is deprecated
alias
:visit_Bignum
:visit_Fixnum
def
visit_String
o
;
quote
(
o
,
@last_column
)
end
alias
:visit_ActiveSupport_Multibyte_Chars
:visit_String
alias
:visit_BigDecimal
:visit_String
alias
:visit_Date
:visit_String
alias
:visit_DateTime
:visit_String
alias
:visit_FalseClass
:visit_String
alias
:visit_Float
:visit_String
alias
:visit_Hash
:visit_String
alias
:visit_Symbol
:visit_String
alias
:visit_Time
:visit_String
alias
:visit_TrueClass
:visit_String
alias
:visit_NilClass
:visit_String
alias
:visit_ActiveSupport_StringInquirer
:visit_String
alias
:visit_Class
:visit_String
def
literal
o
;
o
end
alias
:visit_Arel_Nodes_SqlLiteral
:literal
alias
:visit_Arel_SqlLiteral
:literal
# This is deprecated
alias
:visit_Bignum
:literal
alias
:visit_Fixnum
:literal
def
quoted
o
;
quote
(
o
,
@last_column
)
end
alias
:visit_ActiveSupport_Multibyte_Chars
:quoted
alias
:visit_ActiveSupport_StringInquirer
:quoted
alias
:visit_BigDecimal
:quoted
alias
:visit_Class
:quoted
alias
:visit_Date
:quoted
alias
:visit_DateTime
:quoted
alias
:visit_FalseClass
:quoted
alias
:visit_Float
:quoted
alias
:visit_Hash
:quoted
alias
:visit_NilClass
:quoted
alias
:visit_String
:quoted
alias
:visit_Symbol
:quoted
alias
:visit_Time
:quoted
alias
:visit_TrueClass
:quoted
def
visit_Array
o
o
.
empty?
?
'NULL'
:
o
.
map
{
|
x
|
visit
x
}.
join
(
', '
)
...
...
@@ -352,7 +355,7 @@ def quote_table_name name
end
def
quote_column_name
name
@quoted_columns
[
name
]
||=
@connection
.
quote_column_name
(
name
)
@quoted_columns
[
name
]
||=
Arel
::
Nodes
::
SqlLiteral
===
name
?
name
:
@connection
.
quote_column_name
(
name
)
end
end
end
...
...
test/visitors/test_to_sql.rb
浏览文件 @
162e1d8d
...
...
@@ -5,7 +5,14 @@ module Visitors
describe
'the to_sql visitor'
do
before
do
@visitor
=
ToSql
.
new
Table
.
engine
@attr
=
Table
.
new
(
:users
)[
:id
]
@table
=
Table
.
new
(
:users
)
@attr
=
@table
[
:id
]
end
it
'should not quote sql literals'
do
node
=
@table
[
Arel
.
star
]
sql
=
@visitor
.
accept
node
sql
.
must_be_like
'"users".*'
end
describe
'equality'
do
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录