diff --git a/app/models/post.rb b/app/models/post.rb index c0d69eac993..7e56dfa66bc 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -918,8 +918,8 @@ class Post < ActiveRecord::Base if SiteSetting.secure_media? Upload.where( id: upload_ids, access_control_post_id: nil - ).where.not( - id: CustomEmoji.pluck(:upload_id) + ).where( + 'id NOT IN (SELECT upload_id FROM custom_emojis)' ).update_all( access_control_post_id: self.id ) diff --git a/spec/tasks/bookmarks_spec.rb b/spec/tasks/bookmarks_spec.rb index 16fea02f982..68f8588e0ba 100644 --- a/spec/tasks/bookmarks_spec.rb +++ b/spec/tasks/bookmarks_spec.rb @@ -17,8 +17,14 @@ RSpec.describe "bookmarks tasks" do create_post_actions_and_existing_bookmarks end + def invoke_task(args = nil) + capture_stdout do + Rake::Task['bookmarks:sync_to_table'].invoke(args) + end + end + it "migrates all PostActions" do - Rake::Task['bookmarks:sync_to_table'].invoke + invoke_task expect(Bookmark.all.count).to eq(3) end @@ -26,14 +32,14 @@ RSpec.describe "bookmarks tasks" do it "does not create bookmarks that already exist in the bookmarks table for a user" do Fabricate(:bookmark, user: user1, post: post1) - Rake::Task['bookmarks:sync_to_table'].invoke + invoke_task expect(Bookmark.all.count).to eq(3) expect(Bookmark.where(post: post1, user: user1).count).to eq(1) end it "respects the sync_limit if provided and stops creating bookmarks at the limit (so this can be run progrssively" do - Rake::Task['bookmarks:sync_to_table'].invoke(1) + invoke_task(1) expect(Bookmark.all.count).to eq(1) end