parent
72d88e25ff
commit
2e7b03e9ef
9 changed files with 68 additions and 1 deletions
@ -1,3 +1,4 @@ |
||||
class ApplicationController < ActionController::Base |
||||
include Clearance::Controller |
||||
before_action :set_paper_trail_whodunnit |
||||
end |
||||
|
@ -1,3 +1,4 @@ |
||||
class Contribution < ApplicationRecord |
||||
belongs_to :member |
||||
has_paper_trail |
||||
end |
||||
|
@ -0,0 +1 @@ |
||||
PaperTrail.serializer = PaperTrail::Serializers::JSON |
@ -0,0 +1,38 @@ |
||||
# This migration creates the `versions` table, the only schema PT requires. |
||||
# All other migrations PT provides are optional. |
||||
class CreateVersions < ActiveRecord::Migration[7.0] |
||||
|
||||
# The largest text column available in all supported RDBMS is |
||||
# 1024^3 - 1 bytes, roughly one gibibyte. We specify a size |
||||
# so that MySQL will use `longtext` instead of `text`. Otherwise, |
||||
# when serializing very large objects, `text` might not be big enough. |
||||
TEXT_BYTES = 1_073_741_823 |
||||
|
||||
def change |
||||
create_table :versions do |t| |
||||
t.string :item_type, null: false |
||||
t.string :item_id, null: false |
||||
t.string :event, null: false |
||||
t.string :whodunnit |
||||
#t.text :object, limit: TEXT_BYTES |
||||
|
||||
# Known issue in MySQL: fractional second precision |
||||
# ------------------------------------------------- |
||||
# |
||||
# MySQL timestamp columns do not support fractional seconds unless |
||||
# defined with "fractional seconds precision". MySQL users should manually |
||||
# add fractional seconds precision to this migration, specifically, to |
||||
# the `created_at` column. |
||||
# (https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html) |
||||
# |
||||
# MySQL users should also upgrade to at least rails 4.2, which is the first |
||||
# version of ActiveRecord with support for fractional seconds in MySQL. |
||||
# (https://github.com/rails/rails/pull/14359) |
||||
# |
||||
# MySQL users should use the following line for `created_at` |
||||
# t.datetime :created_at, limit: 6 |
||||
t.datetime :created_at |
||||
end |
||||
add_index :versions, %i(item_type item_id) |
||||
end |
||||
end |
@ -0,0 +1,8 @@ |
||||
# This migration adds the optional `object_changes` column, in which PaperTrail |
||||
# will store the `changes` diff for each update event. See the readme for |
||||
# details. |
||||
class AddObjectChangesToVersions < ActiveRecord::Migration[7.0] |
||||
def change |
||||
add_column :versions, :object_changes, :json |
||||
end |
||||
end |
Loading…
Reference in new issue