ruby-on-rails 使用ActiveRecord Select返回JSONB字段的元素

a7qyws3x  于 2023-05-02  发布在  Ruby
关注(0)|答案(2)|浏览(108)

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

@model1:
data: {"special_date" => "Wed, 16 Mar 2016 11:20:20 -0700", ....}
@model2:
data: {"special_date" => "Wed, 23 Mar 2016 11:20:20 -0700", ....}

我想要的是

Model.all.select("data -> 'special_date'")
iqjalb3h

iqjalb3h1#

如果你想要一个稀疏的ActiveRecord模型示例来保存数据(而不是数组中的原语),你只需要使用select

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上进行链接:

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:

Model.pluck("data -> 'special_date'")
gojuced7

gojuced72#

这并不完美,因为它使用了pluck而不是select,但是

Model.pluck("data -> 'special_date'")

或者如果需要多个列

Model.pluck(:id, "data -> 'special_date'")

工作。

相关问题