处理用户发送的“字符串包含空字节”

时间:2015-03-28 17:36:28

标签: ruby-on-rails ruby postgresql

我有一个API控制器,它接收有关媒体文件路径和id3标签的信息,并使用PostgreSQL / Rails将它们保存到Active Record实例。

但有时用户会发送如下字符串:

"genre"=>"Hip-Hop\u0000Hip-Hop/Rap"

和Rails / Postgres在尝试坚持save时并不高兴:

An ArgumentError occurred in internals#receive:

 string contains null byte
 activerecord (3.2.21) lib/active_record/connection_adapters/postgresql_adapter.rb:1172:in `send_query_prepared'

如何在Ruby中清除此字符串以完全删除空字节?

1 个答案:

答案 0 :(得分:18)

gsub上的String方法可能是合适的。你可以string.gsub("\u0000", '')来摆脱它们。

http://ruby-doc.org/core-2.1.1/String.html#method-i-gsub