Rails - Хранение объекта ActionMail Mail.new в базе данных - PullRequest
0 голосов
/ 02 февраля 2011

Я создаю почтовый объект примерно так:

 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 = text

Идеи? спасибо

1 Ответ

1 голос
/ 07 февраля 2011

Вы смотрели на метод Rails serialize?Похоже, это именно то, что вы хотите сделать.См. Документы здесь (также ознакомьтесь с разделом примерно 1/6 сверху под заголовком «Сохранение массивов, хэшей и других не отображаемых объектов в текстовых столбцах»).Это может быть даже так просто, как добавление

serialize :message_all
serialize :message_plain

к вашей модели IncomingMail, но не поверьте мне на слово.1009 * работает только со строками.

Надеюсь, это поможет!

...