如何从Rails控制器发送PG二进制数据?

时间:2017-11-04 12:22:31

标签: ruby-on-rails postgis binary-data rails-postgresql vector-tiles

我有一个Postgres数据库,其中包含PostGIS扩展和一些地理数据。我需要使用自定义SQL查询生成切片(使用ST_...函数),返回二进制数据(bytea,如\x1a320a0474657374121d12020000180322150946ec3f1a14453b0a09280f091413121e09091e0f1a026331220228012880207802)。我需要将这些数据从我的Rails控制器发送到请求者,标题为'Content-Type: x-application/protobuf'

所以,我的问题是:

1)如何从数据库中获取二进制数据(SequelActiveRecord::Base.connection.execute?) 2)如何在控制器动作中返回此数据? (send_data ..., tyle: ''?)

谢谢!

1 个答案:

答案 0 :(得分:2)

我刚刚想出了解决方案-希望它能对您有所帮助,尽管它已经很久了。

records_array = ActiveRecord::Base.connection.execute(query)
result = records_array[0]['st_asmvt']
encoded = ActiveRecord::Base.connection.unescape_bytea(result)

ActiveRecord::Base.connection.unescape_bytea是答案。