如何使用活动记录在多个级别中搜索json类型的postgres
我有下面的json
:response_body => { "status" => "ok", "um" => { "a" => "a", "b" => { "c" => "ok" } }
实现我的搜索:
LogService.where(response_body: {"status" => "ok"})
如果您使用Postgres作为数据库并且列实际上是json类型,您可以在Rails中使用如下搜索:
LogService.where("response_body#>>'{status}' = 'ok'")
这个#>>将遍历json路径并进行搜索。 如果只使用#>(只有一个>),它将返回剩余的json。
另一个例子,如果你想获得“c”=>“ok”
LogService.where("response_body#>>'{um, b, c}' = 'ok'")
我认为就是这样。
- 具有多个联接的ActiveRecord查询无法识别关系
- ! 处理请求时出现意外错误:无法分配内存
- 何时使用“validates_associated”v。“belongs_to:parent,:validate => true”
- 优雅的PostgreSQL Group for Ruby on Rails / ActiveRecord
- 覆盖database.yml的策略?
- 使用RVM使用sinatra app加载Active Record gem时出错
- Rails查询两个小时之间的时间戳
- 在rubyonrails中,如何从ActiveRecord :: Relation对象获取关联的模型类?
- NameError:has_many通过关系的未初始化常量