我有一个具有以下嵌套结构的ActiveRecord模型:
#<Model id: 2, list_name: "Freddo", extra_data: {"users_count"=>2000}>
我想根据users_count> 1000的条件执行查询以返回所有记录。
Model.where("extra_data.users_count > 1000")
现在,如果上面的代码是嵌套数组,那么上面的代码可能会起作用,但是当将其包裹在花括号中时,如何访问此代码?
答案 0 :(得分:4)
考虑将2.1.3.RELEASE
作为JSONB或JSON列,您可以执行以下操作
extra_data
Postgres JSON运算符Model.where("CAST(extra_data ->> 'users_count' AS NUMERIC) > ?", 1000)
将以文本形式返回结果,并将该值转换为整数并与该值进行比较。
参考-https://www.postgresql.org/docs/9.5/functions-json.html https://edgeguides.rubyonrails.org/active_record_postgresql.html#json-and-jsonb