1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
class NodeAction < ApplicationRecord
belongs_to :node, optional: true
belongs_to :page, optional: true
belongs_to :user, optional: true
validates :action, presence: true
validates :occurred_at, presence: true
def self.record!(node:, action:, user: nil, page: nil, locale: nil, **extra)
create!(
:node => node,
:page => page,
:user => user,
:action => action,
:locale => locale,
:occurred_at => Time.now,
:metadata => {
"username" => user&.login,
"human_readable_node_name" => Globalize.with_locale(I18n.default_locale) {
node&.head&.title || node&.draft&.title
},
}.merge(extra.stringify_keys)
)
end
def actor_name
metadata["username"] || "unknown"
end
def subject_name
metadata["human_readable_node_name"] || node&.unique_name || "deleted node"
end
end
|