2009-08-27 166 views
2

是否有一種使用ActiveRecord的create方法加載二進制列的簡單(或普遍接受)的方法?通過ActiveRecord從文件加載二進制數據創建

例如,我想要做的就是類似這樣的東西:

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

這不行嗎? – 2009-08-27 19:52:37

+0

它似乎不是......除非我只是做錯了。 create方法返回true,我確實在DB中看到記錄;但是,圖像不可恢復,報告的文件大小不匹配。 – jerhinesmith 2009-08-27 20:51:08

回答

1

我能得到這個工作。而不是做:

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

插入一條記錄到數據庫中,但沒有文件

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

的正確的二進制表示似乎做的伎倆。

+0

看起來像Windows中的問題 - 在Windows中(但不是像Linux或OSX那樣的unix-like)二進制文件和文本文件的處理方式不同,因此需要明確的「rb」模式參數來正確加載文件。 – 2012-02-14 20:47:05

+0

不是僅限Windows的問題。我和UNIX系統(準確地說,XUBUNTU)有同樣的問題。推薦的解決方案也適用於我的系統。 – 2015-07-09 20:21:53