class PostVersionRecorder def self.record! post:, event_type:, created_by_user: new(post:, event_type:, created_by_user:).record! end def initialize post:, event_type:, created_by_user: super(record: post, event_type:, created_by_user:) end private def version_class = PostVersion def version_association = :post_versions def record_key = :post def snapshot_attributes { title: @post.title, url: @post.url, thumbnail_base: @post.thumbnail_base, tags: @post.snapshot_tag_names.join(' '), parent: @post.parent, original_created_from: @post.original_created_from, original_created_before: @post.original_created_before } end end