在jsonb上选择不返回任何值

时间:2018-01-04 00:06:38

标签: ruby-on-rails postgresql select jsonb

我试图从jsonb列payload中选择值。 json的格式类似于

{"id" : 123456, "email": "ben@email.com", "items" : [{}, {}, ...]}

使用ActiveRecord,我尝试使用ModelRecord.select("有效负载 - >>'电子邮件'")。正在返回所有和所有记录{{ 1}}。

我确定我做错了什么,或者我误解了正确的用法。

x86_64-pc-linux-gnu上的PostgreSQL 9.6.5 Rails 5.1.3

2 个答案:

答案 0 :(得分:1)

你误解了正确的用法。

  

我正在尝试ModelRecord.select("payload ->> 'email'")并且正在返回所有记录[#<ModelRecord id: nil>, ... ]

这是AR的工作原理,AR将列映射到模型属性,payload是一个jsonb列,因此没有正确映射。您的记录有效,您可以通过简单的方式访问select - ed属性,请尝试:

col = ModelRecord.select("payload ->> 'email'")
col.first.payload

答案 1 :(得分:0)

我不确定我是否理解了您的问题,但我认为您正试图获取唯一的电子邮件列,如果是,您可以这样做。

tools:context="com.example.andriod.justjava.MainActivity"
希望它有所帮助。