#ruby #email
#ruby #Адрес электронной почты
Вопрос:
При использовании Mail gem для получения электронной почты я иногда получаю следующую ошибку.
ActiveRecord::ValueTooLong
Часть, которая вызывает это, — curr_mail.body.decoded .
Как я могу запустить это на Mysql?
При установке максимального размера для тела все работает нормально.
curr_mail.body.decoded[5000]
emails.each do |curr_mail|
Email.create subject: curr_mail.subject, content: curr_mail.body.decoded,
from: curr_mail.from.first , to: curr_mail.to.first, date: curr_mail.date,
messageId: curr_mail.message_id
end
Ответ №1:
Исключение ActiveRecord::ValueTooLong
уже сообщило вам, что не так. content
Столбец в emails
таблице слишком короткий для декодированного тела письма.
Изменение content
типа столбца на text
type или установка content
длины на большее число решило бы эту проблему.
Запустите rails g migration change_content_of_emails_to_text
для создания файла миграции.
Вы можете написать что-то вроде этого в сгенерированном файле миграции:
class ChangeContentOfEmailsToText < ActiveRecord::Migration[5.2]
def change
change_column :emails, :content, :text
end
end
Затем запустите bundle exec rake db:migrate
команду.
Редактировать: я только что понял, что это может быть не конкретный вопрос Rails. Если это не rails-проект, идея та же.
Перейдите в консоль mysql и запустите:
ALTER TABLE emails MODIFY content TEXT;