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.
No hay comentarios:
Publicar un comentario