Postgresql 有没有办法用postgres在activerecord中搜索深度嵌套的json?
假设我有一个foos表,它有一个名为“json_col”的json列 ActiveRecord有没有办法做到: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' ->&
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