require 'mini_magick' class Post < ApplicationRecord belongs_to :parent, class_name: 'Post', optional: true, foreign_key: 'parent_id' belongs_to :uploaded_user, class_name: 'User', optional: true has_many :post_tags, dependent: :destroy has_many :tags, through: :post_tags has_many :user_post_views, dependent: :destroy has_one_attached :thumbnail def as_json options = { } super(options).merge({ thumbnail: thumbnail.attached? ? Rails.application.routes.url_helpers.rails_blob_url( thumbnail, only_path: false) : nil }) rescue super(options).merge(thumbnail: nil) end def resized_thumbnail! return unless thumbnail.attached? image = MiniMagick::Image.read(thumbnail.download) image.resize '180x180' thumbnail.purge thumbnail.attach(io: File.open(image.path), filename: 'resized_thumbnail.jpg', content_type: 'image/jpeg') end end