class ActiveStorage::Attached::Changes::CreateOne
def find_or_build_blob
def find_or_build_blob case attachable when ActiveStorage::Blob attachable when ActionDispatch::Http::UploadedFile ActiveStorage::Blob.build_after_unfurling( io: attachable.open, filename: attachable.original_filename, content_type: attachable.content_type, record: record, service_name: attachment_service_name ) when Rack::Test::UploadedFile ActiveStorage::Blob.build_after_unfurling( io: attachable.respond_to?(:open) ? attachable.open : attachable, filename: attachable.original_filename, content_type: attachable.content_type, record: record, service_name: attachment_service_name ) when Hash ActiveStorage::Blob.build_after_unfurling( **attachable.reverse_merge( record: record, service_name: attachment_service_name ).symbolize_keys ) when String ActiveStorage::Blob.find_signed!(attachable, record: record) when File ActiveStorage::Blob.build_after_unfurling( io: attachable, filename: File.basename(attachable), record: record, service_name: attachment_service_name ) when Pathname ActiveStorage::Blob.build_after_unfurling( io: attachable.open, filename: File.basename(attachable), record: record, service_name: attachment_service_name ) else raise( ArgumentError, "Could not find or build blob: expected attachable, " \ "got #{attachable.inspect}" ) end end