如何在Rails 5中查询jsonb数组字段

时间:2019-07-19 19:52:35

标签: ruby-on-rails postgresql activerecord

如何使用活动记录查询jsonb对象数组

模式

 create_table "routes", force: :cascade do |t|
    t.string "state"
    t.text "address"
    t.bigint "user_id", null: false
    t.jsonb "travel_routes", array: true
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.index ["user_id"], name: "index_routes_on_user_id"
  end

Rails控制台



travel_routes: [{"to"=>"Yaba Lagos", "fee"=>5000}, {"to"=>"Lagos Iyanapaja", "fee"=>3000}]


2 个答案:

答案 0 :(得分:1)

这在这篇SO帖子中得到了很好的回答:

Query on Postgres JSON array field in Rails

对于本文中的问题,这应该可以找到“ to” =“ Yaba Lagos”在哪里:

Route.where('travel_routes @> ?', '[{"to": "Yaba Lagos"}]')

答案 1 :(得分:0)

它也是这样工作的:

Route.where('travel_routes @> ?', [{to: "Yaba Lagos"}].to_json)