Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

paper_trailで扱うカラムを限定したい場合

Modelの差分を残してくれる便利なgem、paper_trailですがデフォルトだと何でも保存対象にしてしまいます。
特定のカラムだけ保存したい場合は:onlyオプション付きで呼び出します。

has_paper_trail :only => [:name]

カラムの内容に動的に対応したい場合はProcオブジェクトで生成する方法などもあるようです。

has_paper_trail :only => [:title => Proc.new { |obj| !obj.title.blank? } ]

上の例では、titleが空の場合無視するという処理を追加しています。

基本は:onlyだけで事足ります。
が、もう少し細かく制御したい場合、他のオプションとして

  • :ignore
  • skip

があります。
前者は追加変更の余地があり、後者は完全無視という違いのようです。
これらについては執筆時点で勉強中です。
使い方が明確になり次第別途記事にします。