310b8ad4e9
The detection logic wasn't really working before
39 lines
860 B
Ruby
39 lines
860 B
Ruby
module Card::Eventable
|
|
extend ActiveSupport::Concern
|
|
|
|
include ::Eventable
|
|
|
|
included do
|
|
before_create { self.last_active_at = Time.current }
|
|
|
|
after_save :track_title_change, if: :saved_change_to_title?
|
|
end
|
|
|
|
def event_was_created(event)
|
|
transaction do
|
|
create_system_comment_for(event)
|
|
touch_last_active_at
|
|
end
|
|
end
|
|
|
|
def touch_last_active_at
|
|
# Not using touch so that we can detect attribute change on callbacks
|
|
update!(last_active_at: Time.current)
|
|
end
|
|
|
|
private
|
|
def should_track_event?
|
|
published?
|
|
end
|
|
|
|
def track_title_change
|
|
if title_before_last_save.present?
|
|
track_event "title_changed", particulars: { old_title: title_before_last_save, new_title: title }
|
|
end
|
|
end
|
|
|
|
def create_system_comment_for(event)
|
|
SystemCommenter.new(self, event).comment
|
|
end
|
|
end
|