Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
7816b985
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,发现更多精彩内容 >>
提交
7816b985
编写于
5月 16, 2013
作者:
A
Aaron Patterson
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #10619 from alno/top_level_array_in_postgres_json
Support array as root element in Postgresql JSON columns
上级
c9d75e08
9b661876
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
17 addition
and
1 deletion
+17
-1
activerecord/lib/active_record/connection_adapters/postgresql/cast.rb
.../lib/active_record/connection_adapters/postgresql/cast.rb
+1
-1
activerecord/lib/active_record/connection_adapters/postgresql/quoting.rb
...b/active_record/connection_adapters/postgresql/quoting.rb
+2
-0
activerecord/test/cases/adapters/postgresql/json_test.rb
activerecord/test/cases/adapters/postgresql/json_test.rb
+14
-0
未找到文件。
activerecord/lib/active_record/connection_adapters/postgresql/cast.rb
浏览文件 @
7816b985
...
...
@@ -60,7 +60,7 @@ def string_to_hstore(string)
end
def
json_to_string
(
object
)
if
Hash
===
object
if
Hash
===
object
||
Array
===
object
ActiveSupport
::
JSON
.
encode
(
object
)
else
object
...
...
activerecord/lib/active_record/connection_adapters/postgresql/quoting.rb
浏览文件 @
7816b985
...
...
@@ -30,6 +30,7 @@ def quote(value, column = nil) #:nodoc:
when
Array
case
sql_type
when
'point'
then
super
(
PostgreSQLColumn
.
point_to_string
(
value
))
when
'json'
then
super
(
PostgreSQLColumn
.
json_to_string
(
value
))
else
if
column
.
array
"'
#{
PostgreSQLColumn
.
array_to_string
(
value
,
column
,
self
).
gsub
(
/'/
,
"''"
)
}
'"
...
...
@@ -98,6 +99,7 @@ def type_cast(value, column, array_member = false)
when
Array
case
column
.
sql_type
when
'point'
then
PostgreSQLColumn
.
point_to_string
(
value
)
when
'json'
then
PostgreSQLColumn
.
json_to_string
(
value
)
else
return
super
(
value
,
column
)
unless
column
.
array
PostgreSQLColumn
.
array_to_string
(
value
,
column
,
self
)
...
...
activerecord/test/cases/adapters/postgresql/json_test.rb
浏览文件 @
7816b985
...
...
@@ -83,4 +83,18 @@ def test_null_json
x
=
JsonDataType
.
first
assert_equal
(
nil
,
x
.
payload
)
end
def
test_select_array_json_value
@connection
.
execute
%q|insert into json_data_type (payload) VALUES ('["v0",{"k1":"v1"}]')|
x
=
JsonDataType
.
first
assert_equal
([
'v0'
,
{
'k1'
=>
'v1'
}],
x
.
payload
)
end
def
test_rewrite_array_json_value
@connection
.
execute
%q|insert into json_data_type (payload) VALUES ('["v0",{"k1":"v1"}]')|
x
=
JsonDataType
.
first
x
.
payload
=
[
'v1'
,
{
'k2'
=>
'v2'
},
'v3'
]
assert
x
.
save!
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录