2011-02-02 48 views
0

我創建一個郵件對象,像這樣:導軌 - 在數據庫中存儲一個ActionMail Mail.new對象

textpart_to_inject= params[:text] 
htmlpart_to_inject= params[:html] 

    message_all = Mail.new do 
    to #{params[:to]} 
    from #{params[:from]} 
    subject #{params[:subject]} 
    text_part do 
     body textpart_to_inject 
    end 
    html_part do 
     content_type 'text/html; charset=UTF-8' 
     body htmlpart_to_inject 
    end 
    end 

然後我要插入到數據庫中,像這樣:

@incoming_mail = IncomingMail.create(:message_all => Base64.encode64(message_all), :message_plain => Base64.encode64(params[:text])) 

但與錯誤:是

TypeError (can't convert Mail::Message into String): 
    app/controllers/incoming_mails_controller.rb:56:in `create' 

我的數據庫列如下: message_all = BYTEA message_plain =文字

想法?謝謝

+0

所以,你試圖將整個郵件對象作爲字節存儲到數據庫中? – raidfive 2011-02-02 05:55:41

回答

1

你看過Rails的serialize方法嗎?聽起來這正是你想要做的。請參閱文檔here(也可以查看標題爲「在文本列中保存數組,哈希和其他不可映射對象」標題下1/6的部分)。它甚至可以像添加

serialize :message_all 
serialize :message_plain 

到您的IncomingMail模型一樣簡單,但請不要對此表態。

順便說一下,您的錯誤即將到來,因爲Base64.encode64()只適用於字符串。

希望這會有所幫助!

相關問題