2011-02-02 101 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()只适用于字符串。

希望这会有所帮助!

相关问题