PaperTrail: как обрабатывать "Данные слишком длинные для столбца" объект ""

У меня есть довольно длинные тексты в моей базе данных, и они, кажется, превышают PaperTrail object максимальная длина (которая на MySQL, кажется, составляет 64 КБ для :text поля).

Я думаю, что этот предел превышен довольно быстро, так как PaperTrail всегда хранит значения до и после каждого версионного поля в одном object поле. Так, например, при создании версии 1 текстового поля модели текстовое поле не должно превышать ~1/2-й его возможной максимальной длины, в противном случае предел object поле уже превышено. Если у вас есть 2 текстовых поля, текстовые поля не должны превышать ~1/4 их максимальной длины.

Итак, как мне решить эту проблему? Должен ли я просто использовать больший тип поля для object? Я просто не могу найти тот, который работает в миграциях Rails, так что это не правильно.

1 ответ

Я исправил проблему, увеличив предел object колонка.

class ChangeVersionsObjectToMediumText < ActiveRecord::Migration
  def change
    # Needed because of this: http://stackru.com/questions/41088654/papertrail-how-to-handle-data-too-long-for-column-object
    change_column :versions, :object, :text, limit: 16.megabytes - 1
  end
end
Другие вопросы по тегам