我的postgres db中有这样一个表:
create_table "tracking_infos", force: :cascade do |t|
t.text "carriers", default: [], array: true
t.text "tracking_numbers", default: [], array: true
t.string "order_id"
t.integer "shop_id"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["order_id"], name: "index_tracking_on_order_id", unique: true
end
我所要做的就是查询这个表,并返回tracking_numbers.length
大于1的记录。
我真的不知道从何说起。尝试TrackingInfo.all.pluck(:tracking_numbers)
,然后处理返回的数组。但这不好。
有什么建议吗?
1条答案
按热度按时间kxkpmulp1#
可能你需要使用Postgres的
array_length
函数(see docs):请记住,
ARRAY_LENGTH
的第二个参数表示数组的维数(在大多数情况下应该是1),而where
的第二个参数替换了?
占位符。