2016-03-28 11 views
-1

私は自分のレールアプリケーションをMySQLデータベースに接続しましたが、私はいくつかのテーブルのデータが圧縮されていることに気付きました。レールと圧縮テーブルのデータmysql

次の表の1つ目のレコードで選択されたデータの例です。私は解凍する機能を使用してみましたが

irb(main):024:0> data 
=> #<Events_Full_Sections event_id: 1, a_full: "x\x9C\xD3\xD55447HN5H\xD2u\xD4\xD5\xE5\x8A60\xD3wKM\xD27204\xB324\xB425\xB622Q\xD0 
\xD55050\x88U\b+\x8A...", b_full: "x\x9C]\x90OO\e1\x10\xC5\xEF\xFE\x14s\x04j{\xBC\xF9\xB3\xD0E=\xA4\b\x91\nh+\xD8(g\xC7;\xD9\xB5\x 
E2\xB5\x8D\xD7!\x11\x9F\x9E%\xA5=\xF44O...", c_full: "x\x9C\x03\x00\x00\x00\x00\x01", e_full: "x\x9C\xC5;\xFBo\xDB8\xD2?o\xFE\nF\x 
C5F\xF6\xAE\xF5r\x1EN\x93\xC8A/mq\xFD\xD0\xDE\x15M\x8B\xC5\xA1)\nJ\xA2m\xA5\x92\xA8\x95\xE4$\xBEl\xFE...", f_full: "x\x9Cu\xCBAK\x 
C30\x14\xC0\xF1{>E\xD8\xFD%\xCD\x8A\xA8\x99\x9D\xA00\x06\x0E\xEC\xA1\x82\xD7.>\x9Aj\x9A\x17\x92\a\xDD\xBE\xBD-\x88\x17\xF1\xFA\xE7 
\xF7\a0...", h_full: "x\x9Cu\x90Ak\[email protected]\x10\x85\xEF\xFB+\x06O\nn\x92\xDD$FS\xF6\xD0j\xC0Bk\x8A\xF1\xD2S\x89\xBBS#5\xBBa\x934\xF5\x 
DFw\xD5\x82\xA72\xF0\xDE...", i_full: "x\x9C\x03\x00\x00\x00\x00\x01", k_full: "x\x9C\x03\x00\x00\x00\x00\x01", z_full: "--1170ce0 
b-Z--\n", compressed: true> 

、この

def decompress(text) 
    Zlib::Inflate.new(-Zlib::MAX_WBITS).inflate(Base64.decode64(text)) 
    end 

そして、私はこの関数を呼び出すときに、私は取得していますのようなもの次

irb(main):032:0> decompress(d) 
NoMethodError: undefined method `unpack' for #<Events_Full_Sections:0x66d3dd0> 
     from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/activemodel-4.2.5.2/lib/ 
`method_missing' 
     from C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/base64.rb:58:in `decode64' 
     from (irb):20:in `decompress' 

任意のアイデアをどのような間違っていますか?

おかげ

答えて

1

あなたdecompress関数は、入力にBase64エンコーディングの文字列を期待していますが、文字列ではないモデルインスタンス、でそれを供給しています。

フィールド自体もbase64のようには見えません。これはraw zlib-compressedとよく似ています。

Zlib.inflate(d.a_full)を試してみてください(など)

+0

は、ありがとうそれが働いてしまいました!別の新しいことを学んだ:) – Deano