PaperTrail:如何处理“列'对象'的数据太长”

时间:2016-12-11 16:56:20

标签: ruby-on-rails paper-trail-gem

我的数据库中有一些非常长的文本,它们似乎超过了PaperTrail的object最大长度(对于:text字段,它在MySQL上似乎是64kb。)

我认为超出此限制的速度非常快,因为PaperTrail始终将每个版本化字段的前后值存储在一个object字段中。所以例如在对模型的1个文本字段进行版本控制时,文本字段不得超过其可能的最大长度的约1/2,否则已超出object字段的限制。如果您有2个文本字段,则文本字段不得超过其最大长度的1/4。

那我该如何处理这个问题呢?我应该只为object使用更大的字段类型吗?我找不到一个可以在Rails迁移中运行的东西,所以这感觉不对。

1 个答案:

答案 0 :(得分:2)

我通过增加object列的限制来解决问题。

class ChangeVersionsObjectToMediumText < ActiveRecord::Migration
  def change
    # Needed because of this: http://stackoverflow.com/questions/41088654/papertrail-how-to-handle-data-too-long-for-column-object
    change_column :versions, :object, :text, limit: 16.megabytes - 1
  end
end