Phản hồi này yêu cầu Postgres 9.4 Trong cấu trúc dữ liệu mẫu của bạn, bạn có như sau:
2.1.1 :202 > r.column_data
=> {"data1"=>[1, 2, 3], "data2"=>"data2-3", "array"=>[{"hello"=>1}, {"hi"=>2}]}
Thật không may, việc kiểm tra sự tồn tại của một phần tử trong một mảng chỉ hoạt động (theo hiểu biết của tôi) với các giá trị chuỗi. Nếu chúng tôi có dữ liệu sau, chúng tôi có thể truy vấn nó mà không gặp vấn đề gì.
{"data1"=>['1', '2', '3'], "data2"=>"data2-3"}
Hãy kiểm tra điều này. Lưu ý:tải trọng là jsonb. Nó sẽ không hoạt động như một trường json.
Dynamic.create(payload: {"data1"=>['1', '2', '3'], "data2"=>"data2-3"})
Dynamic.where("payload -> 'data1' ? '1'").first
=> #<Dynamic id: 8, payload: {"data1"=>["1", "2", "3"], "data2"=>"data2-3"}, created_at: "2014-12-24 02:30:31", updated_at: "2014-12-24 02:30:31">
Để tìm hiểu thêm, bạn có thể xem bài viết này