Skip to content

Commit dd00e34

Browse files
committed
Add relationship_updated_by_id to tables with joins
1 parent 4f386de commit dd00e34

17 files changed

+155
-274
lines changed

app/models/indicator.rb

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class Indicator < VersionedRecord
2121
# has_many :direct_recommendations, through: :indicators_recommendations, source: :recommendation
2222

2323
belongs_to :manager, class_name: "User", foreign_key: :manager_id, required: false
24+
belongs_to :relationship_updated_by, class_name: "User", required: false
2425

2526
accepts_nested_attributes_for :measure_indicators
2627

app/models/measure.rb

+4
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ class Measure < VersionedRecord
1212
has_many :due_dates, through: :indicators
1313
has_many :progress_reports, through: :indicators
1414

15+
belongs_to :parent, class_name: "Measure", required: false
16+
17+
belongs_to :relationship_updated_by, class_name: "User", required: false
18+
1519
accepts_nested_attributes_for :recommendation_measures
1620
accepts_nested_attributes_for :measure_categories
1721

app/models/measure_category.rb

+6-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,14 @@ class MeasureCategory < ApplicationRecord
88
validates :measure_id, presence: true
99
validates :category_id, presence: true
1010

11-
after_commit :set_relationship_updated_at, on: [:create, :update, :destroy]
11+
after_commit :set_relationship_updated, on: [:create, :update, :destroy]
1212

1313
private
1414

15-
def set_relationship_updated_at
16-
measure.update_column(:relationship_updated_at, Time.zone.now) if measure && !measure.destroyed?
15+
def set_relationship_updated
16+
if measure && !measure.destroyed?
17+
measure.update_column(:relationship_updated_at, Time.zone.now)
18+
measure.update_column(:relationship_updated_by_id, ::PaperTrail.request.whodunnit)
19+
end
1720
end
1821
end

app/models/measure_indicator.rb

+11-4
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,19 @@ class MeasureIndicator < ApplicationRecord
88
validates :measure_id, presence: true
99
validates :indicator_id, presence: true
1010

11-
after_commit :set_relationship_updated_at, on: [:create, :update, :destroy]
11+
after_commit :set_relationship_updated, on: [:create, :update, :destroy]
1212

1313
private
1414

15-
def set_relationship_updated_at
16-
measure.update_column(:relationship_updated_at, Time.zone.now) if measure && !measure.destroyed?
17-
indicator.update_column(:relationship_updated_at, Time.zone.now) if indicator && !indicator.destroyed?
15+
def set_relationship_updated
16+
if measure && !measure.destroyed?
17+
measure.update_column(:relationship_updated_at, Time.zone.now)
18+
measure.update_column(:relationship_updated_by_id, ::PaperTrail.request.whodunnit)
19+
end
20+
21+
if indicator && !indicator.destroyed?
22+
indicator.update_column(:relationship_updated_at, Time.zone.now)
23+
indicator.update_column(:relationship_updated_by_id, ::PaperTrail.request.whodunnit)
24+
end
1825
end
1926
end

app/models/user.rb

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class User < VersionedRecord
2020
has_many :categories, through: :user_categories
2121
has_many :bookmarks
2222

23+
belongs_to :relationship_updated_by, class_name: "User", required: false
24+
2325
validates :email, presence: true
2426
validates :name, presence: true
2527

app/models/user_category.rb

+6-3
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@ class UserCategory < ApplicationRecord
66
validates :user_id, presence: true
77
validates :category_id, presence: true
88

9-
after_commit :set_relationship_updated_at, on: [:create, :update, :destroy]
9+
after_commit :set_relationship_updated, on: [:create, :update, :destroy]
1010

1111
private
1212

13-
def set_relationship_updated_at
14-
user.update_column(:relationship_updated_at, Time.zone.now) if user && !user.destroyed?
13+
def set_relationship_updated
14+
if user && !user.destroyed?
15+
user.update_column(:relationship_updated_at, Time.zone.now)
16+
user.update_column(:relationship_updated_by_id, ::PaperTrail.request.whodunnit)
17+
end
1518
end
1619
end

app/models/user_role.rb

+6-3
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@ class UserRole < VersionedRecord
66

77
delegate :name, to: :role, prefix: true, allow_nil: true
88

9-
after_commit :set_relationship_updated_at, on: [:create, :update, :destroy]
9+
after_commit :set_relationship_updated, on: [:create, :update, :destroy]
1010

1111
private
1212

13-
def set_relationship_updated_at
14-
user.update_column(:relationship_updated_at, Time.zone.now) if user && !user.destroyed?
13+
def set_relationship_updated
14+
if user && !user.destroyed?
15+
user.update_column(:relationship_updated_at, Time.zone.now)
16+
user.update_column(:relationship_updated_by_id, ::PaperTrail.request.whodunnit)
17+
end
1518
end
1619
end
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class IndicatorSerializer
22
include FastVersionedSerializer
33

4-
attributes :title, :description, :reference, :draft, :manager_id, :frequency_months, :start_date, :repeat, :end_date
4+
attributes :title, :description, :reference, :draft, :manager_id, :frequency_months, :start_date, :repeat, :end_date, :relationship_updated_at, :relationship_updated_by_id
55

66
set_type :indicators
77
end

app/serializers/measure_serializer.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class MeasureSerializer
22
include FastVersionedSerializer
33

4-
attributes :title, :description, :reference, :target_date, :draft, :outcome, :indicator_summary, :target_date_comment
4+
attributes :title, :description, :reference, :target_date, :draft, :outcome, :indicator_summary, :target_date_comment, :relationship_updated_at, :relationship_updated_by_id
55

66
set_type :measures
77
end

app/serializers/user_serializer.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
class UserSerializer
22
include FastVersionedSerializer
33

4-
attributes :email, :name
4+
attributes :email,
5+
:name,
6+
:relationship_updated_at,
7+
:relationship_updated_by_id
58

69
set_type :users
710
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class AddRelationshipUpdatedByIdToTablesWithJoins < ActiveRecord::Migration[6.1]
2+
def change
3+
add_column :indicators, :relationship_updated_by_id, :bigint, null: true
4+
add_foreign_key :indicators, :users, column: :relationship_updated_by_id, primary_key: :id
5+
6+
add_column :measures, :relationship_updated_by_id, :bigint, null: true
7+
add_foreign_key :measures, :users, column: :relationship_updated_by_id, primary_key: :id
8+
9+
add_column :users, :relationship_updated_by_id, :bigint, null: true
10+
add_foreign_key :users, :users, column: :relationship_updated_by_id, primary_key: :id
11+
end
12+
end

db/schema.rb

+6
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
t.string "reference"
9898
t.integer "last_modified_user_id"
9999
t.datetime "relationship_updated_at", precision: 6
100+
t.bigint "relationship_updated_by_id"
100101
t.index ["created_at"], name: "index_indicators_on_created_at"
101102
t.index ["draft"], name: "index_indicators_on_draft"
102103
t.index ["manager_id"], name: "index_indicators_on_manager_id"
@@ -129,6 +130,7 @@
129130
t.integer "last_modified_user_id"
130131
t.string "reference"
131132
t.datetime "relationship_updated_at", precision: 6
133+
t.bigint "relationship_updated_by_id"
132134
t.index ["draft"], name: "index_measures_on_draft"
133135
end
134136

@@ -315,6 +317,7 @@
315317
t.integer "last_modified_user_id"
316318
t.boolean "allow_password_change", default: true
317319
t.datetime "relationship_updated_at", precision: 6
320+
t.bigint "relationship_updated_by_id"
318321
t.index ["email"], name: "index_users_on_email", unique: true
319322
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
320323
end
@@ -333,10 +336,13 @@
333336
add_foreign_key "framework_frameworks", "frameworks", column: "other_framework_id"
334337
add_foreign_key "framework_taxonomies", "frameworks"
335338
add_foreign_key "framework_taxonomies", "taxonomies"
339+
add_foreign_key "indicators", "users", column: "relationship_updated_by_id"
340+
add_foreign_key "measures", "users", column: "relationship_updated_by_id"
336341
add_foreign_key "recommendation_indicators", "indicators"
337342
add_foreign_key "recommendation_indicators", "recommendations"
338343
add_foreign_key "recommendation_recommendations", "recommendations"
339344
add_foreign_key "recommendation_recommendations", "recommendations", column: "other_recommendation_id"
340345
add_foreign_key "recommendations", "frameworks"
341346
add_foreign_key "taxonomies", "frameworks"
347+
add_foreign_key "users", "users", column: "relationship_updated_by_id"
342348
end

0 commit comments

Comments
 (0)