如何从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'")发布于 2017-01-02 20:54:05
如果希望稀疏的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' as special_date")发布于 2017-01-02 20:47:14
这并不完美,因为它使用的是拔取而不是选择,但是
Model.pluck("data -> 'special_date'")或者如果您需要一个以上的列
Model.pluck(:id, "data -> 'special_date'")很管用。
https://stackoverflow.com/questions/41432882
复制相似问题