ActiveRecord :: ValueTooLong与Ruby Gem Mail

时间:2019-04-12 11:26:34

标签: ruby email

使用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 个答案:

答案 0 :(得分:0)

ActiveRecord::ValueTooLong异常已经告诉您出了什么问题。 content表中的emails列对于已解码的电子邮件正文来说太短了。

content列类型更改为text类型或将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的特定问题。 如果这是一个非铁路项目,则想法是相同的。

转到mysql控制台并运行:

ALTER TABLE emails MODIFY content TEXT;