ActiveRecordでのバイナリの扱い方(というかActiveRecord以前・・)
以前ActiveRecordを使用してバイナリデータをDBから読み書きしようとしてうまくいかなかったと書いた。(http://d.hatena.ne.jp/koki-h/20060929/1159481100)
そのときはDBからの読み出し方法に問題があると思っていたが、実はDBへの書き込みに問題があった。
以前のコード
bin = Binary.new() bin.file_name = "samplebin.zip" open("samplebin.zip"){|file| bin.bin = file.read } bin.save
書き直したコード
bin = Binary.new() bin.file_name = "samplebin.zip" open("samplebin.zip"){|file| file.binmode #<==これが抜けていた。 bin.bin = file.read } bin.save
DBへの書き込みの前に、元ファイルからデータの読み出しをやっている。このときにbinmodeの設定が必要だった。
DBからの読み出しの時(ファイルへの書き込み)にはbinmodeを設定していたのだから、DBへの書き込み(ファイルからの読み出し)の時にも必要だということくらい気づけよなー>俺