Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
1c41d3b9
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,发现更多精彩内容 >>
提交
1c41d3b9
编写于
6月 13, 2014
作者:
R
Rafael Mendonça França
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #15686 from sgrif/sg-pg-int-arrays
PG arrays should type cast user input
上级
9a0c2e5c
d569d0ba
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
15 addition
and
6 deletion
+15
-6
activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb
...active_record/connection_adapters/postgresql/oid/array.rb
+8
-4
activerecord/test/cases/adapters/postgresql/array_test.rb
activerecord/test/cases/adapters/postgresql/array_test.rb
+7
-2
未找到文件。
activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb
浏览文件 @
1c41d3b9
...
...
@@ -12,12 +12,16 @@ def initialize(subtype)
def
type_cast_from_database
(
value
)
if
value
.
is_a?
(
::
String
)
type_cast_array
(
parse_pg_array
(
value
))
type_cast_array
(
parse_pg_array
(
value
)
,
:type_cast_from_database
)
else
super
end
end
def
type_cast_from_user
(
value
)
type_cast_array
(
value
,
:type_cast_from_user
)
end
# Loads pg_array_parser if available. String parsing can be
# performed quicker by a native extension, which will not create
# a large amount of Ruby objects that will need to be garbage
...
...
@@ -32,11 +36,11 @@ def type_cast_from_database(value)
private
def
type_cast_array
(
value
)
def
type_cast_array
(
value
,
method
)
if
value
.
is_a?
(
::
Array
)
value
.
map
{
|
item
|
type_cast_array
(
item
)
}
value
.
map
{
|
item
|
type_cast_array
(
item
,
method
)
}
else
@subtype
.
type_cast_from_database
(
value
)
@subtype
.
public_send
(
method
,
value
)
end
end
end
...
...
activerecord/test/cases/adapters/postgresql/array_test.rb
浏览文件 @
1c41d3b9
...
...
@@ -97,8 +97,13 @@ def test_type_cast_array
def
test_type_cast_integers
x
=
PgArray
.
new
(
ratings:
[
'1'
,
'2'
])
assert
x
.
save!
assert_equal
([
'1'
,
'2'
],
x
.
ratings
)
assert_equal
([
1
,
2
],
x
.
ratings
)
x
.
save!
x
.
reload
assert_equal
([
1
,
2
],
x
.
ratings
)
end
def
test_select_with_strings
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录