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