From c2dfc1f04a63293d59325a9371c4e47582ec969e Mon Sep 17 00:00:00 2001 From: Karol Selak Date: Mon, 22 Mar 2021 00:54:45 +0100 Subject: [PATCH] AuditRecord --- app/models/application_record.rb | 15 +++++++++++++++ app/models/audit_record.rb | 2 ++ db/migrate/20210321225317_create_audit_records.rb | 11 +++++++++++ db/schema.rb | 10 +++++++++- spec/models/audit_record_spec.rb | 5 +++++ 5 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 app/models/audit_record.rb create mode 100644 db/migrate/20210321225317_create_audit_records.rb create mode 100644 spec/models/audit_record_spec.rb diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 10a4cba..d894dc0 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -1,3 +1,18 @@ class ApplicationRecord < ActiveRecord::Base self.abstract_class = true + def update(*args) + result = super(*args) + AuditRecord.create(model: self.class, action: 'update', params: self.to_json) + result + end + def save(*args) + result = super(*args) + AuditRecord.create(model: self.class, action: 'save', params: self.to_json) + result + end + def self.create(*args) + result = super(*args) + AuditRecord.create(model: self.class, action: 'create', params: result.to_json) + result + end end diff --git a/app/models/audit_record.rb b/app/models/audit_record.rb new file mode 100644 index 0000000..f11cf2b --- /dev/null +++ b/app/models/audit_record.rb @@ -0,0 +1,2 @@ +class AuditRecord < ActiveRecord::Base +end diff --git a/db/migrate/20210321225317_create_audit_records.rb b/db/migrate/20210321225317_create_audit_records.rb new file mode 100644 index 0000000..e376865 --- /dev/null +++ b/db/migrate/20210321225317_create_audit_records.rb @@ -0,0 +1,11 @@ +class CreateAuditRecords < ActiveRecord::Migration[6.1] + def change + create_table :audit_records do |t| + t.string :model + t.string :action + t.string :params + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 4a38152..44467b1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,15 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_03_21_213901) do +ActiveRecord::Schema.define(version: 2021_03_21_225317) do + + create_table "audit_records", force: :cascade do |t| + t.string "model" + t.string "action" + t.string "params" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end create_table "authors", force: :cascade do |t| t.string "first_name" diff --git a/spec/models/audit_record_spec.rb b/spec/models/audit_record_spec.rb new file mode 100644 index 0000000..24cf532 --- /dev/null +++ b/spec/models/audit_record_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe AuditRecord, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end