2016-12-11 10 views
1

データベースにかなり長いテキストがあり、PaperTrailのobject最大長(MySQLでは:textフィールドの64KBのようです)を超えているようです。PaperTrail: "オブジェクトが列の長すぎる" "

PaperTrailは、バージョン管理された各フィールドの前後の値を常に1つのobjectフィールドに保存するので、この制限をかなり超過していると思います。だからモデルのバージョン1テキストフィールドの場合、テキストフィールドは可能な最大長の1/2を超えてはならず、そうでない場合はobjectフィールドの制限を既に超えています。 2つのテキストフィールドがある場合、テキストフィールドはその最大長の約1/4を超えてはいけません。

この問題はどのように処理する必要がありますか?私は単にobjectのために大きなフィールドタイプを使うべきですか?私はRailsの移行で動作するものを見つけることができないので、これは正しく感じられません。

答えて

1

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 
+1

PT 4.0.0.rc2から、生成された移行はまさにこれを行います。 https://github.com/airblade/paper_trail/commit/4ba85e2548af43aa5ea09311cb56932a9153d99fを参照してください。私はあなたがそれを理解してうれしいです! –

+0

お役立ち情報ありがとうございました。 –

関連する問題