From f31758cc70b00adb63f53ea7b915cad20f50e1df Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 11 Sep 2018 23:48:25 -0700 Subject: [PATCH] FIX: Uploads not being linked correctly to posts. Regression due to https://github.com/discourse/discourse/commit/1f636c445bcbc66b1765bcc3966887adcb14bdbf. --- app/models/upload.rb | 2 +- spec/models/upload_spec.rb | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/models/upload.rb b/app/models/upload.rb index 00f17cbead..b56e68a672 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -177,7 +177,7 @@ class Upload < ActiveRecord::Base end return if uri&.path.blank? - data = uri.path.match(/(\/original\/\dX\/[\/\.\w]+\/([a-zA-Z0-9]+)[\.\w]+)/) + data = uri.path.match(/(\/original\/\dX[\/\.\w]*\/([a-zA-Z0-9]+)[\.\w]+)/) return if data.blank? sha1 = data[2] upload = nil diff --git a/spec/models/upload_spec.rb b/spec/models/upload_spec.rb index b19bcd3d3e..35f0db6a9d 100644 --- a/spec/models/upload_spec.rb +++ b/spec/models/upload_spec.rb @@ -82,6 +82,15 @@ describe Upload do expect(Upload.get_from_url(upload.url)).to eq(upload) end + describe 'for a url without a tree' do + let(:url) { "/uploads/default/original/1X/#{sha1}.png" } + let(:upload) { Fabricate(:upload, url: url, sha1: sha1) } + + it 'should return the right upload' do + expect(Upload.get_from_url(upload.url)).to eq(upload) + end + end + it "works when using a cdn" do begin original_asset_host = Rails.configuration.action_controller.asset_host