这就是我试过的
f = 1.2
f = Marshal.dump(f) #\004\bf\v1.2\00033
之后我尝试将此f保存到文本列中,这是我遇到的错误。
ActiveRecord::StatementInvalid: SQLException: unrecognized token: "fϾ1.2 33" (Ͼ is male symbol, but I can't find one).
答案 0 :(得分:5)
我在我的模型中使用一个简单的包装器来转储数据并将其编码为base64,这样它就是一个原始字符串:
def data=(data)
write_attribute :data, ActiveSupport::Base64.encode64(Marshal.dump(data))
end
def data
Marshal.load(ActiveSupport::Base64.decode64(read_attribute :data))
end
答案 1 :(得分:0)
phoet的答案很好,我只添加了对空值的支持,因此您在加载时不会出错。
def education=(data)
write_attribute :education, ActiveSupport::Base64.encode64(Marshal.dump(data))
end
def education
data = read_attribute :education
if data
Marshal.load(ActiveSupport::Base64.decode64(data))
else
nil
end
end