Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

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

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