首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有activerecord选择的jsonb字段的返回元素

具有activerecord选择的jsonb字段的返回元素
EN

Stack Overflow用户
提问于 2017-01-02 20:24:52
回答 2查看 3.9K关注 0票数 4

如何从jsonb存储字段中“选择”一个值?

例如:

代码语言:javascript
复制
@model1:
data: {"special_date" => "Wed, 16 Mar 2016 11:20:20 -0700", ....}
@model2:
data: {"special_date" => "Wed, 23 Mar 2016 11:20:20 -0700", ....}

我想要像这样的

代码语言:javascript
复制
Model.all.select("data -> 'special_date'")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-02 20:54:05

如果希望稀疏的ActiveRecord模型实例保存数据(而不是数组中的原语),只需使用select

代码语言:javascript
复制
model = Model.select("data -> 'special_date' as special_date'").first
model.id #=> nil
model.special_date = #=> "Wed, 23 Mar 2016 11:20:20 -0700"

如果您想从jsonb列中获取整个记录以及特定的数据,则可以在select上链接。

代码语言:javascript
复制
model = Model.select('*').select("data -> 'special_date' as special_date").first
model.id #=> 42
model.special_date #=> "Wed, 23 Mar 2016 11:20:20 -0700"

如果根本不需要ActiveRecord实例,只需使用pluck:

代码语言:javascript
复制
Model.pluck("data -> 'special_date' as special_date")
票数 10
EN

Stack Overflow用户

发布于 2017-01-02 20:47:14

这并不完美,因为它使用的是拔取而不是选择,但是

代码语言:javascript
复制
Model.pluck("data -> 'special_date'")

或者如果您需要一个以上的列

代码语言:javascript
复制
Model.pluck(:id, "data -> 'special_date'")

很管用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41432882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档