2009-08-27 6 views
2

ActiveRecordのcreateメソッドを使用してバイナリカラムをロードする方法は簡単ですか?例えばActiveRecord経由でファイルからバイナリデータをロードする

、私がやろうとしていることは、これに似たものです:私はこの作業を取得することができました

MyTableObject.create :name => "Test", :image => File.read("PathToMyFile.jpg") 
+0

これは機能しませんか? –

+0

それは間違っているのでなければ...そうではないようです。 createメソッドはtrueを返し、DBにレコードを表示します。ただし、イメージは回復可能ではなく、報告されたファイルサイズは一致しません。 – jerhinesmith

答えて

1

。むしろ行うより:

MyTableObject.create(
    :name => "Test", 
    :image => File.read("PathToMyFile.jpg") 
) 

がデータベースにレコードを挿入なかったが、ファイル

MyTableObject.create(
    :name => "Test", 
    :image => File.open("PathToMyFile.jpg", 'rb').read 
) 

の正しいバイナリ表現せずにトリックを行うように見えました。

+0

Windowsのみの問題です.LinuxやOSXのようなUnix系のバイナリやテキストファイルでは扱いが異なるため、明示的な 'rb'モードのパラメータが正しく読み込まれる必要があります。 –

+0

Windowsのみの問題ではありません。私はUNIXシステム(XUBUNTU、正確には)で同じ問題を抱えていました。そして、私のシステムでも推奨される解決策が働いていました。 –

関連する問題