带有嵌套的ActiveRecord条件查询

时间:2019-08-07 10:32:23

标签: ruby-on-rails database activerecord

我有一个具有以下嵌套结构的ActiveRecord模型:

#<Model id: 2, list_name: "Freddo", extra_data: {"users_count"=>2000}>

我想根据users_count> 1000的条件执行查询以返回所有记录。

Model.where("extra_data.users_count > 1000")

现在,如果上面的代码是嵌套数组,那么上面的代码可能会起作用,但是当将其包裹在花括号中时,如何访问此代码?

1 个答案:

答案 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

相关问题