Si, por ejemplo, tenemos un campo de la base de datos que preveemos que ocupe mucho espacio y no va a leerse frecuentemente se puede comprimir de la siguiente forma.
class Post < ActiveRecord::Base
def text
Zlib::Inflate.inflate(read_attribute(:text))
end
def text=(new_text)
old_text=read_attribute(:text)
new_compress_text=Zlib::Deflate.deflate(new_text)
write_attribute(:text, new_compress_text) if old_text!=new_compress_text
end
end
Para comprimir/descomprimir los datos se usa la librería zlib así que es necesario hacer require 'zlib'.
Además es necesario que el campo de la base de datos esté marcado como binario.
0 comentarios:
Publicar un comentario