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

时间:2014-03-15 00:56:14

标签: postgresql activerecord

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

ActiveRecord是否有办法:

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

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

1 个答案:

答案 0 :(得分:0)

Postgres 9.3,ActiveRecord 4

Foo.where("json_col -> 'foo' ->> 'bar' ILIKE ?", "%baz%") 

这假定不区分大小写的搜索,其中任何序列都围绕着' baz'。您的pattern可能会有所不同。

获取' where_with_magical_json_finder(:bar =>' baz')'方法,在你的Foo模型中创建一个范围。

scope :magic, -> { where("json_col -> 'foo' ->> 'bar' ILIKE ?", "%baz") }

然后拨打Foo.magic