Postgresql 有没有办法用postgres在activerecord中搜索深度嵌套的json?

Postgresql 有没有办法用postgres在activerecord中搜索深度嵌套的json?,postgresql,activerecord,Postgresql,Activerecord,假设我有一个foos表,它有一个名为“json_col”的json列 ActiveRecord有没有办法做到: Foo.create!(:json_col => { :foo => { :bar => 'baz' } }.to_json) Foo.where_with_magical_json_finder(:bar => 'baz') Postgres 9.3,ActiveRecord 4 Foo.where("json_col -> 'foo' ->&

假设我有一个foos表,它有一个名为“json_col”的json列

ActiveRecord有没有办法做到:

Foo.create!(:json_col => { :foo => { :bar => 'baz' } }.to_json)

Foo.where_with_magical_json_finder(:bar => 'baz')

Postgres 9.3,ActiveRecord 4

Foo.where("json_col -> 'foo' ->> 'bar' ILIKE ?", "%baz%") 
这假定对“baz”周围的任何序列进行不区分大小写的搜索。你的意见可能会有所不同

要获得“where_with_magical_json_finder(:bar=>“baz”)”方法,请在您的Foo模型中创建一个作用域

scope :magic, -> { where("json_col -> 'foo' ->> 'bar' ILIKE ?", "%baz") }
然后调用
Foo.magic