[#<User
id: 5,
name: "Dave",
email: "[email protected]",
info:
{"years_old"=>"30",
"recent_purchases"=>["car", "house", "boat"]}>]
假設我將最近的購買保存到{info: { recent_purchases: [])用戶模型中
我想建立一個范圍,讓用戶只'car'在最近購買。我無法更改資料庫結構,所以我必須弄清楚
我試過這個,User.where("info->>'recent_purchases' IN (?)", 'car')但它不起作用
這也不起作用 -User.where("info->>'recent_purchases' = ?", ["car"])
編輯:感謝@Jacob,這作業得很好!
User.where("where info -> 'recent_purchases' ? :car and jsonb_array_length(info -> 'recent_purchases') = 1", car: car)
uj5u.com熱心網友回復:
在recent_purchases 中獲取擁有汽車的用戶
User.where("info -> 'recent_purchases' ? :car", car: car)
在recent_purchases 中獲取只有一輛車的用戶
User.where("info -> 'recent_purchases' = to_jsonb(array[:car])", car: car)
上一個示例的替代方案
User.where("where info -> 'recent_purchases' ? :car and jsonb_array_length(info -> 'recent_purchases') = 1", car: car)
如果 info 是 json 而不是 jsonb 則將其轉換為 jsonb
info::jsonb
有關查詢 json/jsonb 的更多方法,請參閱 PostgreSQL 檔案:
https://www.postgresql.org/docs/9.5/functions-json.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/344639.html
