【发布时间】:2011-10-16 00:04:44
【问题描述】:
我需要在将大量文本保存到数据库之前对其进行压缩,并在客户端请求时将其解压缩。
当我使用 Rails 控制台插入新记录并立即查询新插入的记录时,我现在使用的方法似乎工作正常。即,我可以成功解压压缩的描述。
但我无法为在此日期之前添加的任何其他记录解压缩压缩的 description。我真的很困惑,尤其是作为 ROR 世界的新手。
我正在使用MySQL 作为数据库。
能否请您指出正确的方向?请查看下面的模型以更好地理解它。
require "base64"
class Video < ActiveRecord::Base
before_save :compress_description
def desc
unless description.blank?
return decompress(description)
end
end
private
def compress_description
unless description.blank?
self.description = compress(description)
end
end
def compress(text)
Base64.encode64(Zlib::Deflate.new(nil, -Zlib::MAX_WBITS).deflate(text, Zlib::FINISH))
end
def decompress(text)
Zlib::Inflate.new(-Zlib::MAX_WBITS).inflate(Base64.decode64(text))
end
end
【问题讨论】:
-
你能告诉我你是如何使用这个模型的吗?我尝试了同样的事情,对我来说效果很好。我怀疑您在查找未加密字符串时可能使用的是描述而不是 desc 方法,但我想确认是否是这种情况。
-
@user420504: 不,我使用的是
desc,如果我在同一天获得插入的记录,desc确实有效。但是如果我在几天后尝试拉同样的记录,它只会给我junk
标签: mysql ruby-on-rails ruby ruby-on-rails-3 zlib