モデルを持っていると言ってみましょう Neighborhood
jsonb []フィールドを持つ families
これは、jsonオブジェクトを含む配列であり、どのようなタイプのキー値ペアでもそうです [{"name":"Smiths", "count":4}, {"name":"Miller","out_on_vacation":false}, {"name":"Bennet", "house_color":"red", "count": 4}]
私は、特定のオブジェクトを内部に持つNeighborhoodsのNeighborhoodsを見つけるためにactiverecordクエリを実行したい families
アレイ。 だから私が Neighborhood.where({families: {count: 4})
結果として、ファミリフィールドにキー値のペアを持つjsonbオブジェクトが含まれているNeighborhoodモデルが生成されます count: 4
。私はたくさんの異なる質問を返すことはできませんが、エラーを返さずに仕事をするようなことはできません。希望の結果を得るためにActiverecordクエリを書く方法は?
編集: 私は次のように移行を実行しました:
def change
add_column :neighborhoods, :families, :jsonb, array: true, default: [], index: true
end
回答:
回答№1は0私はあなたが次のようなことをすると信じています:
Neighborhood.where("families -> "count" ? 4")
この記事はあなたを助けるかもしれません: http://nandovieira.com/using-postgresql-and-jsonb-with-ruby-on-rails
編集:ちょうどあなたがjsonbの内部に配列を持っていることに気づいたので、これはおそらく "うまくいきませんでした。
編集2:これはRedditで答えられ、私のためにも働いた。自分自身の参考にしてここに答える。
Neighborhood.where %q(families @> "[{"count":?}]"), 4