Files
once-campfire/app/models/message/attachment.rb
Kevin McConnell df76a227dc Hello world
First open source release of Campfire 🎉
2025-08-21 09:31:59 +01:00

42 lines
892 B
Ruby

module Message::Attachment
extend ActiveSupport::Concern
THUMBNAIL_MAX_WIDTH = 1200
THUMBNAIL_MAX_HEIGHT = 800
included do
has_one_attached :attachment do |attachable|
attachable.variant :thumb, resize_to_limit: [ THUMBNAIL_MAX_WIDTH, THUMBNAIL_MAX_HEIGHT ]
end
end
module ClassMethods
def create_with_attachment!(attributes)
create!(attributes).tap(&:process_attachment)
end
end
def attachment?
attachment.attached?
end
def process_attachment
ensure_attachment_analyzed
process_attachment_thumbnail
end
private
def ensure_attachment_analyzed
attachment&.analyze
end
def process_attachment_thumbnail
case
when attachment.video?
attachment.preview(format: :webp).processed
when attachment.representable?
attachment.representation(:thumb).processed
end
end
end