Browse Source
* Replace Discard with Paper Trail * Track who created or changed records via UI * Track model updates by AdminUserspull/286/head
28 changed files with 407 additions and 126 deletions
@ -0,0 +1,15 @@ |
|||||||
|
module Admin |
||||||
|
module PaperTrail |
||||||
|
extend ActiveSupport::Concern |
||||||
|
|
||||||
|
included do |
||||||
|
before_action :set_paper_trail_whodunnit |
||||||
|
end |
||||||
|
|
||||||
|
protected |
||||||
|
|
||||||
|
def user_for_paper_trail |
||||||
|
current_admin_user |
||||||
|
end |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,22 @@ |
|||||||
|
# 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, limit: 191 |
||||||
|
t.bigint :item_id, null: false |
||||||
|
t.string :event, null: false |
||||||
|
t.string :whodunnit |
||||||
|
t.text :object, limit: TEXT_BYTES |
||||||
|
|
||||||
|
t.datetime :created_at |
||||||
|
end |
||||||
|
add_index :versions, %i[item_type item_id] |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,11 @@ |
|||||||
|
class RemoveDiscardedAtFromCaseLogs < ActiveRecord::Migration[7.0] |
||||||
|
def up |
||||||
|
remove_index :case_logs, :discarded_at |
||||||
|
remove_column :case_logs, :discarded_at |
||||||
|
end |
||||||
|
|
||||||
|
def down |
||||||
|
add_column :case_logs, :discarded_at, :datetime |
||||||
|
add_index :case_logs, :discarded_at |
||||||
|
end |
||||||
|
end |
Loading…
Reference in new issue