如何使用 ActiveRecord select 仅 json 的一部分存储在 Postgres 中
How to select only part of json, stored in Postgres, with ActiveRecord
假设我有一个模型 User
,它有一个名为 settings
的 json
类型的字段。假设该字段大致如下所示:
{
color: 'red',
language: 'English',
subitems:
{
item1: true,
item2: 43,
item3: ['foo', 'bar', 'baz']
}
}
如果我这样做 User.select(:settings)
我将获得每个用户的所有设置。但我只想获取用户的语言。我都试过了:
User.select("settings -> 'language'")
和
User.select("settings ->> 'language'")
但这只是 returns 个空对象:
[#<User:0x007f381fa92208 id: nil>,
...]
这可能吗?如果是 - 我可以只使用 json
还是需要切换到 jsonb
?
尝试User.select("settings -> 'language' as user_language")
。
结果关系中的每个对象都应响应 user_language
.
假设我有一个模型 User
,它有一个名为 settings
的 json
类型的字段。假设该字段大致如下所示:
{
color: 'red',
language: 'English',
subitems:
{
item1: true,
item2: 43,
item3: ['foo', 'bar', 'baz']
}
}
如果我这样做 User.select(:settings)
我将获得每个用户的所有设置。但我只想获取用户的语言。我都试过了:
User.select("settings -> 'language'")
和
User.select("settings ->> 'language'")
但这只是 returns 个空对象:
[#<User:0x007f381fa92208 id: nil>,
...]
这可能吗?如果是 - 我可以只使用 json
还是需要切换到 jsonb
?
尝试User.select("settings -> 'language' as user_language")
。
结果关系中的每个对象都应响应 user_language
.